ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Множества в Python: уникальные элементы

Автор: · Обновлено

Множество хранит уникальные хешируемые значения. Добавление повтора не меняет коллекцию, а проверка in обычно быстрее последовательного поиска в длинном списке. Порядок элементов не следует использовать как часть результата.

Общие участники двух групп

math_club = {'Аня', 'Илья', 'Маша'}
code_club = {'Маша', 'Олег', 'Илья'}

print(math_club & code_club)
print(len(math_club | code_club))

Пересечение содержит Илью и Машу, а размер объединения равен 4. Порядок при печати множества может отличаться между запусками, поэтому ожидаем именно состав, а не строковое расположение.

Операции над наборами

Оператор | строит объединение, & — пересечение, - — элементы только левого множества, ^ — элементы ровно одного из множеств. Эти операции возвращают новые коллекции. Метод add добавляет один элемент, discard удаляет без ошибки, если значения нет; remove в таком случае вызовет KeyError.

Пустое множество создаётся через set(), потому что {} — пустой словарь. Преобразование set(list) убирает повторы, но также теряет исходный порядок. Если порядок нужен, используйте словарь или отдельный проход со вспомогательным множеством.

Уникальные посетители

Прочитайте две строки с именами участников, соберите два множества и выведите количество уникальных имён, общих участников и тех, кто есть только в первой группе. Проверьте повторы внутри строки и полностью непересекающиеся группы. Для стабильного вывода самих имён примените sorted к результату операции.

Множество против списка

Сформируйте список из тысячи повторяющихся идентификаторов и множество на его основе. Проверьте одно существующее и одно отсутствующее значение в обеих коллекциях, но не делайте вывод по одному измерению времени. Сначала сравните семантику: список сохраняет порядок и повторы, множество — уникальность и быстрые проверки. Затем восстановите порядок первых появлений с помощью seen и отдельного результата. Добавьте frozenset как неизменяемый набор, который может быть ключом словаря. В финале выберите коллекцию для списка оценок, набора разрешений и истории посещений, аргументируя контрактом данных.

Практикум: уникальные ответы и пересечение наборов

Даны ответы двух классов на опрос, внутри есть повторы. Получите уникальные ответы каждого класса, общие варианты и ответы только первого класса. Для отображения отсортируйте результат, не рассчитывая на порядок множества. Проверьте пустой набор и полностью совпадающие классы. Затем посчитайте число повторов отдельным словарём и объясните, почему множество для этой задачи недостаточно. Сравните проверку принадлежности в списке и множестве на большом наборе, не включая печать в измерение.

Контрольная точка

Какая операция соответствует словам «есть хотя бы в одном классе», а какая — «есть в обоих»? Запишите их через объединение и пересечение и проверьте на трёх элементах вручную.

Частые вопросы

Сохраняет ли set порядок добавления?

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

Источники