Множества (sets) — это неупорядоченные коллекции уникальных элементов. В Python множества являются мощным инструментом для работы с такими коллекциями, где важен факт присутствия элемента, а не его позиция или количество вхождений. В этой лекции мы рассмотрим основные концепции, методы работы с множествами и примеры их использования.
Множество можно создать несколькими способами:
С помощью литерала множества:
# Пустое множество создаётся через конструктор set()
empty_set = set()
# Множество с элементами
fruit_set = {"apple", "banana", "cherry"}
print(fruit_set)
Выходные данные:
{'banana', 'apple', 'cherry'}
С помощью функции set()
:
# Преобразование списка в множество
numbers = set([1, 2, 3, 4, 5])
print(numbers)
Выходные данные:
{1, 2, 3, 4, 5}
Для добавления элемента используется метод add()
fruit_set = {"apple", "banana", "cherry"}
fruit_set.add("orange")
print(fruit_set)
Выходные данные:
{'banana', 'apple', 'cherry', 'orange'}
Удаление элемента:
Существует несколько методов для удаления элементов:
remove(element)
: Удаляет элемент, если его нет — выбрасывает ошибку KeyError
.discard(element)
: Удаляет элемент, если его нет — ничего не происходит.pop()
: Удаляет и возвращает случайный элемент.fruit_set = {"apple", "banana", "cherry"}
fruit_set.remove("banana")
print(fruit_set)
fruit_set.discard("apple")
print(fruit_set)
fruit_set.pop() # Удаляет случайный элемент
print(fruit_set)
Выходные данные:
{'apple', 'cherry'}
{'cherry'}
set() # Осталось пустое множество
В этой секции рассмотрим методы, которые позволяют выполнять различные операции над множествами, такие как объединение, пересечение и разность множеств.
union
и оператор |
):Объединение множеств возвращает новое множество, содержащее все уникальные элементы обоих исходных множеств.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set)
Выходные данные:
{1, 2, 3, 4, 5}
Пересечение множеств (intersection
и оператор &
):
Пересечение множеств возвращает новое множество, содержащее только те элементы, которые присутствуют в обоих исходных множествах.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1.intersection(set2)
print(intersection_set)
Выходные данные:
{3}
Разность множеств (difference
и оператор -
):
Разность множеств возвращает новое множество, содержащее элементы, которые присутствуют в первом множестве, но отсутствуют во втором.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference_set = set1.difference(set2)
print(difference_set)
Выходные данные:
{1, 2}
Симметричная разность множеств (symmetric_difference
и оператор ^
):
Симметричная разность возвращает новое множество, содержащее элементы, которые присутствуют в одном из множеств, но не в обоих.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
sym_diff_set = set1.symmetric_difference(set2)
print(sym_diff_set)
Выходные данные:
{1, 2, 4, 5}
Проверка подмножества и надмножества (issubset
и issuperset
):
issubset()
: Проверяет, является ли одно множество подмножеством другого.
set1 = {1, 2, 3}
set2 = {1, 2}
print(set2.issubset(set1)) # True
Выходные данные:
True
issuperset()
: Проверяет, является ли одно множество надмножеством другого.
set1 = {1, 2, 3}
set2 = {1, 2}
print(set1.issuperset(set2)) # True
Выходные данные:
True
Множество может содержать только хэшируемые объекты, такие как числа, строки и кортежи. Нехэшируемые объекты, такие как списки и другие множества, не могут быть элементами множества.
valid_set = {1, 2, "apple", (3, 4)}
# invalid_set = {[1, 2], {3, 4}} # Ошибка
Вот таблица по множествам:
Концепция/Метод | Описание | Пример использования | Выходные данные |
---|---|---|---|
Создание множества | Множество создается через литерал {} или функцию set() . | my_set = {1, 2, 3} empty_set = set() | {1, 2, 3} set() |
Уникальность | Множество содержит только уникальные элементы. | set([1, 2, 2, 3]) | {1, 2, 3} |
Добавление элемента | Добавляет элемент в множество (если его нет). | my_set.add("apple") | {1, 2, 3, "apple"} |
Удаление элемента | Удаляет элемент с помощью методов remove() , discard() или случайный элемент pop() . | my_set.remove(2) my_set.pop() | {1, 3} |
Объединение множеств | Возвращает новое множество с элементами обоих множеств. | set1.union(set2) `set1 | set2` |
Пересечение множеств | Возвращает множество с элементами, присутствующими в обоих множествах. | set1.intersection(set2) set1 & set2 | {3} |
Разность множеств | Возвращает множество с элементами, которые есть в первом, но отсутствуют во втором. | set1.difference(set2) set1 - set2 | {1, 2} |
Симметричная разность | Возвращает множество с элементами, присутствующими только в одном из множеств. | set1.symmetric_difference(set2) ^ | {1, 2, 4, 5} |
Проверка подмножества | Проверяет, является ли одно множество подмножеством другого. | set2.issubset(set1) | True |
Проверка надмножества | Проверяет, является ли одно множество надмножеством другого. | set1.issuperset(set2) | True |
Хэшируемость элементов | Множество может содержать только хэшируемые элементы (числа, строки, кортежи). | valid_set = {1, "apple", (3, 4)} | {1, "apple", (3, 4)} |
Изменяемость множеств | Множества изменяемы, можно добавлять или удалять элементы. | fruit_set.add("orange") | {"apple", "banana", "cherry", "orange"} |
Неизменяемые множества | frozenset — неизменяемый аналог множества, нельзя добавлять или удалять элементы. | frozen = frozenset([1, 2, 3]) | frozenset({1, 2, 3}) |
Этот список методов и примеров работы с множествами поможет понять, как использовать их для эффективного решения задач в Python. Неизменяемые множества мы рассмотрим позже.
Множества — мощный и гибкий инструмент Python для работы с уникальными и неупорядоченными данными. Они просты в использовании и предоставляют множество встроенных методов для выполнения различных операций. Понимание и эффективное использование множеств может значительно упростить задачи, связанные с обработкой данных. В следующей лекции мы разберём то, как применяются множества в реальных задачах.