Выбор ответа Junior Память и производительность спрашивают часто обновлено

Почему in по списку медленный

Вопрос

Почему замена if user_id in banned_list на if user_id in banned_set ускоряет обработку?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Множество ищет по хешу за O(1), список перебором. Список проверяется перебором с начала, множество вычисляет хеш и сразу идёт в нужный слот.

Варианты ответа

  1. Множество ищет по хешу за O(1), список переборомправильный ответ
  2. Множество хранит элементы отсортированными по хешу
  3. Множество использует бинарный поиск по элементам
  4. Список копируется при каждой проверке in

Разбор

Список проверяется перебором с начала, множество вычисляет хеш и сразу идёт в нужный слот. Сортировки и бинарного поиска во множестве нет, а in список не копирует. На тысячах элементов и миллионах проверок разница огромная.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.