Python для новичковКоллекцииМножество: создание и проверка принадлежности

Множество: создание и проверка принадлежности

Уроки курсаМножество: создание и проверка принадлежности

Проверка принадлежности оператором in и получение уникальных элементов из списка

Два самых частых сценария работы с множеством — проверить, есть ли что-то внутри, и убрать дубликаты из списка. Оба делаются в одну строку.

Оператор in

Для множества in работает так же, как для списка: возвращает True или False. Синтаксис одинаковый, но есть практическое преимущество: множество устроено иначе внутри — детали этого изучают позже, но на практике это означает значительно более быструю проверку, чем у списка, даже при большом числе элементов.

Пример с городами:

visited = {"Москва", "Питер", "Казань"}

print("Москва" in visited)      # True
print("Новосибирск" in visited) # False
print("Питер" not in visited)   # False

Это удобно в условиях. Например, чтобы не добавлять пользователя в рассылку дважды:

subscribed = {"alice@mail.ru", "bob@mail.ru"}

user = "carol@mail.ru"
if user not in subscribed:
    subscribed.add(user)
    print(f"{user} добавлен в рассылку")
else:
    print(f"{user} уже подписан")

Здесь in и add() работают вместе: проверяем членство — добавляем только тех, кого ещё нет.

Паттерн set(список) для дедупликации

Если есть список с повторами и нужны только уникальные значения — конвертируй его в множество:

cities = ["Москва", "Питер", "Москва", "Казань", "Питер", "Казань"]
unique_cities = set(cities)
print(unique_cities)  # {'Москва', 'Питер', 'Казань'} — порядок произвольный

Если после дедупликации нужен список (например, чтобы отсортировать или передать в функцию, которая ждёт именно список):

unique_sorted = sorted(set(cities))
print(unique_sorted)  # ['Казань', 'Москва', 'Питер']

sorted() принимает любую коллекцию, поэтому его можно применить прямо к множеству — результат будет списком, отсортированным по алфавиту.

Полный мини-сценарий: собираем теги из нескольких источников, убираем дубликаты и проверяем, есть ли нужный тег:

raw_tags = ["python", "data", "python", "ml", "data", "python"]
tags = set(raw_tags)
print(tags)  # {'python', 'data', 'ml'}

print("ml" in tags)      # True
print("deep" in tags)    # False

Один вызов set() — и список из шести элементов превращается в три уникальных. После этого in позволяет быстро проверить наличие любого тега.