все Python 3Множества (set)понятие
in / not in для множеств — O(1)
поиск
Проверка принадлежности в множестве работает за O(1) (хэш-таблица), в отличие от O(n) для списков.
Синтаксис
item in s | item not in s
O(1) — усреднённая оценка работы хеш-таблицы, а не гарантия, и она требует, чтобы искомое значение было хешируемым: поиск списка внутри множества упадёт с TypeError. Перегонять список в множество ради единственной проверки смысла нет — само построение стоит O(n) и окупается, только если проверок много.
Примеры
s = {1, 2, 3, 4, 5}
print(3 in s)
# → True
print(6 in s)
# → False
print(6 not in s)
# → True
big = set(range(10**6))
print(999999 in big)
# → True (мгновенно, O(1))
banned = {'spam', 'ads', 'junk'}
msg = 'spam email'
print(any(w in banned for w in msg.split()))
# → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности