Коллекции

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

Содержание курса

Создание множества: литерал, конструктор и ловушка с {}

Создать множество можно двумя способами, и у каждого своя область применения.

Литерал — когда элементы уже известны заранее. Просто перечисляешь значения через запятую в фигурных скобках:

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(). Литерал {...} работает только тогда, когда внутри есть хотя бы один элемент.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.