Python Glossary English

все 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Сообщить о неточности