Python для новичков: множества (set и frozenset)

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

Создание множеств

Существует два основных способа создания множеств:

  1. Использование функции set():

    my_set = set()  # Создание пустого множества
    print(my_set, type(my_set)) # Вывод: set() <class 'set'>
    my_set = set("Hello") # Создание множества из строки
    print(my_set) # Вывод: {'H', 'e', 'l', 'o'}  (Порядок элементов случаен)
  2. Использование фигурных скобок {}:

    Фигурные скобки в 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.

Что будем искать? Например,программа