Множества в Python — неупорядоченные коллекции уникальных элементов. В отличие от списков, множества не содержат повторяющихся элементов, а порядок элементов в них не гарантируется. Это делает множества удобным инструментом для выполнения различных операций, связанных с проверкой на уникальность и выполнением математических операций над множествами.
Создание множеств
Существует два основных способа создания множеств:
- Использование функции set():
my_set = set() # Создание пустого множества print(my_set, type(my_set)) # Вывод: set() <class 'set'> my_set = set("Hello") # Создание множества из строки print(my_set) # Вывод: {'H', 'e', 'l', 'o'} (Порядок элементов случаен)
- Использование фигурных скобок {}:
Фигурные скобки в Python также используются для создания словарей. Для создания множества с помощью фигурных скобок необходимо указать значения без пар «ключ: значение»:
my_set = {1, 2, 3} print(my_set, type(my_set)) # Вывод: {1, 2, 3} <class 'set'> my_dict = {1: "one", 2: "two"} # Это словарь, а не множество! print(my_dict, type(my_dict)) # Вывод: {1: 'one', 2: 'two'} <class 'dict'>
Множества также можно создавать с помощью генераторов списков:
my_set = {i**2 for i in range(10)} print(my_set) # Вывод: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81} (Порядок элементов случаен)
frozenset — неизменяемые множества
Аналогично кортежам, которые являются неизменяемыми списками, frozenset представляет собой неизменяемое множество. После создания frozenset к нему нельзя добавить или удалить элементы.
a = set("Hello")
b = frozenset("RTI")
a.add("!") # Добавление элемента в изменяемое множество
print(a)
# b.add("!") # Это вызовет ошибку! К frozenset нельзя добавлять элементы.
print(b)
Операции и методы множеств
Рассмотрим некоторые полезные операции и методы для работы с множествами:
1. Проверка длины множества:
a = {32, 76, 43, 23}
print(len(a)) # Вывод: 4
2. Проверка принадлежности элемента множеству:
x = 45
a = {32, 76, 45, 23}
print(x in a) # Вывод: True
print(56 in a) # Вывод: False
3. Проверка на непересечение множеств:
a = {32, 76, 43, 23}
x = {67, 12, 990}
print(a.isdisjoint(x)) # Вывод: True (множества не имеют общих элементов)
x = {32, 12, 990}
print(a.isdisjoint(x)) # Вывод: False (множества имеют общий элемент 32)
4. Проверка на равенство множеств:
a = {32, 76, 43, 23}
x = {23, 43, 76, 32}
print(a == x) # Вывод: True (множества равны, порядок элементов не важен)
5. Проверка на подмножество:
a = {32, 76, 43, 23}
x = {23, 43, 76, 32}
print(a == x) # Вывод: True (a является подмножеством x и наоборот)
x = {23, 43}
print(x.issubset(a)) # Вывод: True (x является подмножеством a)
Операции изменения множеств:
- update(): Добавляет элементы из другого итерируемого объекта в множество.
- intersection_update(): Оставляет в множестве только элементы, присутствующие также и в другом множестве (пересечение).
- difference_update(): Удаляет из множества элементы, присутствующие в другом множестве (разность).
- symmetric_difference_update(): Оставляет в множестве элементы, присутствующие только в одном из двух множеств (симметрическая разность).
- add(): Добавляет элемент в множество.
- remove(): Удаляет элемент из множества; вызывает ошибку, если элемента нет.
- discard(): Удаляет элемент, если он присутствует; не вызывает ошибку, если элемента нет.
- pop(): Удаляет и возвращает произвольный элемент из множества.
- clear(): Очищает множество.
Множества в Python — мощный инструмент для работы с коллекциями уникальных элементов. Изучение их свойств и методов позволит эффективно решать задачи, связанные с обработкой данных, проверкой на уникальность и выполнением математических операций над множествами. Более подробную информацию и дополнительные примеры можно найти на сайте itproger.com.