Множество: создание и проверка принадлежности
Содержание курса
Создание множества: литерал, конструктор и ловушка с {}
Создать множество можно двумя способами, и у каждого своя область применения.
Литерал — когда элементы уже известны заранее. Просто перечисляешь значения через запятую в фигурных скобках:
genres = {"рок", "джаз", "поп"}
print(genres) # {'рок', 'джаз', 'поп'} — порядок может отличаться
print(type(genres)) # <class 'set'>
Конструктор set() — когда нужно создать пустое множество или преобразовать уже существующую последовательность:
empty = set() # пустое множество
print(empty) # set()
print(type(empty)) # <class 'set'>
tags = set(["python", "data", "python", "code"]) # из списка с дублями
print(tags) # {'python', 'data', 'code'}
Во втором примере set() принял список как аргумент и убрал повтор "python" автоматически.
Ловушка с пустыми {}
Есть момент, на котором спотыкаются почти все, кто знакомится с множеством после словарей. Пустые фигурные скобки {} в Python — это словарь, а не множество:
wrong = {}
print(type(wrong)) # <class 'dict'> — словарь!
correct = set()
print(type(correct)) # <class 'set'> — то что нужно
Если написать s = {} и потом попробовать вызвать s.add("что-то"), Python выдаст AttributeError — у словаря нет метода add(). Ошибка не всегда очевидна, потому что на вид {} выглядит как разумная запись.
Правило простое: пустое множество — только через set(). Литерал {...} работает только тогда, когда внутри есть хотя бы один элемент.
