Статья

Python: множества

5 сентября 2026~8 минут10–11 класс

«Python: множества» — тема, где важно не заучивание, а аккуратность. Показываем по шагам: определения, разбор типового задания, оформление ответа и критерии.

Что такое множество в Python

Если в программе нужно хранить уникальные значения, обычный список может создать лишние повторы и усложнить проверку. Множество в Python помогает быстро убрать дубликаты, проверить наличие элемента и сравнить две группы данных. В этой статье ты разберёшься, как создавать множества, изменять их и выполнять операции объединения, пересечения и разности.

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

\( numbers = {2, 4, 6, 8} \)
names = {"Аня", "Илья", "Аня"}
print(names) # {"Аня", "Илья"}

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

Создание и основные действия

Пустое множество создают только с помощью функции set(). Запись {} означает пустой словарь, и это частая ошибка начинающих:

\( empty = set() \)
\( data = set([1, 2, 2, 3]) \)
print(data) # {1, 2, 3}

Чтобы добавить один элемент, используй add(), а чтобы удалить — remove() или discard(). Метод remove() вызовет ошибку, если элемента нет, а discard() просто ничего не сделает.

colors = {"красный", "синий"}
colors.add("зелёный")
colors.discard("жёлтый")
print("синий" in colors) # True

Оператор in проверяет принадлежность элемента множеству. Количество элементов показывает функция len(). Перебрать множество можно циклом for, но рассчитывать на конкретный порядок не следует.

Совет репетитора

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

Операции над множествами

Множества особенно полезны, когда нужно сравнить две группы. Объединение собирает все уникальные элементы. Пересечение оставляет только общие. Разность показывает элементы, которые есть в первом множестве, но отсутствуют во втором.

\( a = {1, 2, 3, 4} \)
\( b = {3, 4, 5, 6} \)
a | b # {1, 2, 3, 4, 5, 6}
a & b # {3, 4}
\( a - b # {1, 2} \)

Те же действия можно записать методами union(), intersection() и difference(). Симметрическая разность ^ оставляет элементы, которые принадлежат только одному из множеств:

\( a ^ b # {1, 2, 5, 6} \)

Есть и проверки отношений. issubset() определяет, является ли одно множество подмножеством другого, а issuperset() — содержит ли оно все элементы другого. Например, {2, 4} является подмножеством {2, 4, 6}.

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

Разобранный пример

Разберём задачу полностью. В первый день ученик решил задачи с номерами 1, 2, 3 и 5, а во второй — 3, 4 и 5. Нужно найти номера, которые решены в оба дня, и номера, решённые только в первый день.

\( day1 = {1, 2, 3, 5} \)
\( day2 = {3, 4, 5} \)
\( both = day1 & day2 \)
\( only_first = day1 - day2 \)
print("В оба дня:", both)
print("Только в первый день:", only_first)
Результат: В оба дня: {3, 5}
Результат: Только в первый день: {1, 2}

Сначала мы создали два множества. Повторяющиеся номера внутри одного дня всё равно хранились бы один раз. Затем оператор & оставил общие элементы 3 и 5. Оператор - просмотрел элементы day1 и убрал те, что встретились в day2. Поэтому остались 1 и 2.

Если поменять множества местами в разности, ответ изменится: day2 - day1 даст {4}. Это важная особенность операции: результат зависит от того, какое множество записано слева.

ОперацияЗаписьРезультат
Объединениеa | bВсе уникальные элементы
Пересечениеa & bОбщие элементы
Разностьa - bТолько элементы из a

Типичные ошибки

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

Третья ошибка — обращение к элементу по индексу: запись numbers[0] для множества невозможна. Если нужен конкретный элемент по позиции, преобразуй данные в список, но делай это осознанно, потому что порядок всё равно не является главным свойством множества.

Четвёртая ошибка — использование изменяемых объектов внутри множества:

wrong = {[1, 2], [3, 4]} # ошибка
\( right = {(1, 2), (3, 4)} \)

Кортежи можно хранить в множестве, если все их элементы также неизменяемы. Ещё одна ловушка — метод remove(): он останавливает программу ошибкой, если элемента нет. Для безопасного удаления выбирай discard().

Ловушка

Не сравнивай множества как списки. У {1, 2, 3} и {3, 2, 1} одинаковое содержимое, хотя элементы записаны в разном порядке.

Проверь себя на небольших примерах и затем переходи к задачам в бесплатной практике школы, чтобы закрепить синтаксис не только чтением.

Что запомнить

Множество set хранит только уникальные элементы и не гарантирует порядок. Пустое множество создаётся через set(). Для добавления используют add(), для безопасного удаления — discard(), для проверки — оператор in.

Главные операции такие: | объединяет множества, & находит общие элементы, - показывает разность, а ^ оставляет элементы, встречающиеся только в одном множестве. Разность направлена слева направо, поэтому порядок операндов важен.

Если тема пока кажется непривычной, решай задания маленькими шагами: сначала предскажи результат, затем запусти код и объясни каждую строку. Зарегистрируйся в личном кабинете и реши 5 заданий бесплатно — так ты быстро проверишь, что действительно понял множества.

Чем множество отличается от списка?

Список сохраняет порядок и допускает повторы, а множество хранит только уникальные элементы и не поддерживает обращение по индексу.

Как создать множество из строки?

Передай строку функции set(). Например, set("мама") оставит уникальные символы, но порядок их вывода не гарантируется.

Когда использовать discard вместо remove?

Используй discard(), если элемент может отсутствовать и программа не должна завершаться ошибкой. remove() подходит, когда отсутствие элемента означает проблему.

Как закрепить тему после разбора?

Составь два-три своих множества, выполни над ними все четыре основные операции и проверь ответы в коде. Затем реши несколько тренировочных задач в личном кабинете, объясняя результат каждой операции словами.

Проверь себя на реальных заданиях

После такого разбора решите 5–7 заданий подряд — и тема ваша. Тренажёр Просто Урок подберёт их автоматически и объяснит ошибки по шагам. Бесплатно.

Важно. Материалы сайта носят информационно-образовательный характер и не являются публичной офертой (ст. 437 ГК РФ), индивидуальной консультацией или руководством к действию. Мы аккуратно работаем с фактами, но не гарантируем полную точность и актуальность: структура и правила экзаменов могут меняться — сверяйтесь с официальными источниками (ФИПИ, действующие кодификаторы и нормативные акты РФ). Администрация сайта не несёт ответственности за возможные неточности и за решения, принятые на основе материалов. Заметили неточность — напишите нам, мы исправим.