Выбор ответа Junior Память и производительность спрашивают часто обновлено
Почему in по списку медленный
Вопрос
Почему замена if user_id in banned_list на if user_id in banned_set ускоряет обработку?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Множество ищет по хешу за O(1), список перебором. Список проверяется перебором с начала, множество вычисляет хеш и сразу идёт в нужный слот.
Варианты ответа
- Множество ищет по хешу за O(1), список переборомправильный ответ
- Множество хранит элементы отсортированными по хешу
- Множество использует бинарный поиск по элементам
- Список копируется при каждой проверке
in
Разбор
Список проверяется перебором с начала, множество вычисляет хеш и сразу идёт в нужный слот. Сортировки и бинарного поиска во множестве нет, а in список не копирует. На тысячах элементов и миллионах проверок разница огромная.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память и производительность»
- Встроенные функции против ручного цикла
- Пересечение больших списков id
- Числа Фибоначчи без экспоненты
- Скользящая медиана потока на двух кучах
- Найти пару с суммой быстрее O(n²)
- Циклические ссылки и gc
- Управление памятью в CPython
- Инструменты профилирования Python