Что такое множество в программировании
Что проверяют
Понимаете ли вы структуру данных, а не синтаксис литерала. За вопросом обычно стоит продолжение про сложность операций и про то, почему проверка вхождения в множество не зависит от размера, а в списке зависит. Это базовый фильтр на умение выбирать коллекцию под задачу.
Как отвечать
Множество это неупорядоченная коллекция уникальных элементов. В Python оно построено на хеш-таблице, поэтому добавление, удаление и проверка принадлежности идут за константное время в среднем, тогда как у списка проверка линейная. Плата за это: элементы обязаны быть хешируемыми, а порядок обхода не гарантирован.
a = {1, 2, 3}
b = set([3, 4]) # пустое множество только через set()
a | b, a & b, a - b # объединение, пересечение, разность
a ^ b # симметрическая разность
frozenset(a) # неизменяемое, само может лежать в множествеТипичные применения: снять дубликаты, быстро проверить принадлежность внутри цикла, сравнить два набора идентификаторов и получить появившиеся и исчезнувшие. Хорошо, если вспомните и про операции сравнения множеств, то есть проверку подмножества и непересекаемости.
Где спотыкаются
Пишут пустые фигурные скобки и получают словарь. Ошибка тихая: код падает позже, на вызове метода добавления, и по трассировке это выглядит как проблема в другом месте.
Пытаются положить в множество список или словарь и ловят ошибку хеширования. Отдельная ловушка это объект, у которого хеш считается по изменяемому полю: после изменения элемент остаётся в таблице, но перестаёт находиться поиском.
Ожидают, что множество сохранит порядок вставки, как современный словарь. Оно не сохраняет, и порядок может отличаться между запусками интерпретатора. Когда нужны и уникальность, и порядок, берут словарь с пустыми значениями.