Множества
Множества (sets) — это неупорядоченные коллекции уникальных элементов. Они полезны для выполнения операций, связанных с уникальностью данных, таких как удаление дубликатов, проверка принадлежности элемента и выполнение математических операций над множествами (объединение, пересечение, разность).
Создание множества
Множество создается с помощью фигурных скобок {}
или функции set()
.
Элементы множества разделяются запятыми.
Важно: Пустое множество создается с помощью set()
, а не {}
, так как {}
создает пустой словарь.
Особенности множеств
- Уникальность элементов: Множества автоматически удаляют дубликаты.
- Неупорядоченность: Элементы множества не имеют определенного порядка.
- Изменяемость: Множества могут изменяться (добавлять/удалять элементы), но сами элементы множества должны быть неизменяемыми (например, числа, строки, кортежи).
Добавление и удаление элементов
Добавление элементов
Для добавления элемента в множество используется метод add()
.
Удаление элементов
Для удаления элементов используются методы:
remove()
— удаляет элемент, если он существует (иначе вызывает ошибку).discard()
— удаляет элемент, если он существует (не вызывает ошибку, если элемента нет).pop()
— удаляет и возвращает случайный элемент (так как множества неупорядочены).clear()
— очищает множество.
Операции над множествами
Множества поддерживают математические операции, такие как объединение, пересечение, разность и симметрическая разность.
Объединение (union()
или |
)
Возвращает множество, содержащее все элементы из обоих множеств.
Пример:Пересечение (intersection()
или &
)
Возвращает множество, содержащее только общие элементы.
Пример:Разность (difference()
или -
)
Возвращает множество, содержащее элементы, которые есть в первом множестве, но отсутствуют во втором.
Пример:Симметрическая разность (symmetric_difference()
или ^
)
Возвращает множество, содержащее элементы, которые есть только в одном из множеств.
Пример:Проверка подмножества и надмножества
issubset()
— проверяет, является ли множество подмножеством другого.issuperset()
— проверяет, является ли множество надмножеством другого.
Итерация по множеству
Множества поддерживают итерацию с помощью цикла for.
Пример:10 20 30
Генерация множеств (Set Comprehension)
Множества можно создавать с помощью генераторов, аналогично спискам.
Пример:Множества — это мощный инструмент для работы с уникальными данными. Они поддерживают множество операций, таких как объединение, пересечение и разность, что делает их полезными для решения задач, связанных с уникальностью и сравнением данных.
Примеры решения задач
Задача: Напишите программу, которая находит общие элементы в двух множествах.
Решение: Для нахождения общих элементов в двух множествах в Python используется операция пересечения множеств. Она реализуется с помощью оператора &
или метода intersection()
.
- Определение множеств: Мы создали два множества
set1
иset2
, содержащие различные элементы. - Операция пересечения: Оператор
&
выполняет пересечение двух множеств, оставляя только те элементы, которые присутствуют в обоих множествах. - Вывод результата: Программа выводит множество общих элементов, в данном случае это
{4, 5}
.
Альтернативный способ:
Вы можете использовать метод intersection()
для достижения той же цели:
Этот метод тоже вернет множество общих элементов.
Задача: Создайте множество, содержащее квадраты чисел от 1 до 10, используя Set Comprehension.
Решение:
- Set Comprehension: Конструкция
{выражение for переменная in последовательность if условие}
создает множество, применяя выражение ко всем элементам последовательности, удовлетворяющим условию (если оно есть). В нашем случае выражение — это возведение в квадратx**2
, а последовательность — это диапазон чисел от 1 до 10 включительно. - Диапазон чисел:
range(1, 11)
генерирует последовательность чисел от 1 до 10. Последнее число (11) не включается в диапазон. - Возведение в квадрат: Каждое число из диапазона возводится в квадрат с помощью выражения
x**2
.
{64, 1, 36, 9, 16, 49, 81, 25, 4}
Обратите внимание, что элементы множества выводятся в случайном порядке, так как множества не сохраняют порядок вставки элементов.
Больше задач для практики вы найдёте в задачнике.