Когда нужно быстро проверить, содержится ли элемент в коллекции, многие по привычке используют список. Но это дорого по времени:
Проверка
x in some_list проходит по всем элементам — сложность O(n).Сравним:
— List — поиск по элементам, медленно на больших данных
— Set — хеш-таблица, поиск в среднем O(1)
Пример с миллионом элементов:
big_list = list(range(1000000))
big_set = set(big_list)
start = time.time()
print(999999 in big_list)
print(f"List lookup: {time.time() - start:.6f}s")
start = time.time()
print(999999 in big_set)
print(f"Set lookup: {time.time() - start:.6f}s")
Вывод:
List lookup: ~0.015000s
Set lookup: ~0.000020s
Разница — в сотни раз быстрее.
Где особенно полезно использовать set:
— удаление дубликатов,
— валидация входных данных,
— быстрый поиск «есть/нет»,
— пересечение/объединение коллекций,
— сравнение больших списков.
✅ Просто заменив list на set в местах, где важна скорость проверки, можно получить мощный прирост производительности без изменения логики.
🐸 Библиотека питониста
#буст