Множества
@ProgHelpBot- Объявление
- Добавление элемента
- Удаление элемента
- Проверка наличия элемента
- Операции
- Методы и функции
- Frozenset
Объявление
Хранит только уникальные элементы без какой-либо последовательности.
Для создания применяются фигурные скобки {}, внутри которых через запятую перечисляются элементы множества. Пустое множество нельзя создать только с помощью фигурных скобок. Внутри обязательно должен быть какой-то элемент.
empty1 = set() # пустое
empty2 = {''} # пустое
people1 = {"Alex", "Bill", "Carl"} # {'Alex', 'Bill', 'Carl'}
people2 = {"Alex", "Alex", "Bill", "Bill", "Carl", "Carl"} # {'Alex', 'Bill', 'Carl'}
Для создания множества из другого набора элементов (строка, список, кортеж) также используется функция-конструктор set().
people1 = ["Alex", "Bill", "Carl"] people2 = set(people2)
Для вывода элементов множества можно использовать функцию print(). Порядок выводимых элементов может отличаться.
people = {"Alex", "Bill", "Carl"}
print(people) # {'Carl', 'Bill', 'Alex'}
Добавление элемента
Для добавления элемента используется метод add().
people = {"Alex", "Bill"}
people.add("Carl")
print(people) # {'Carl', 'Alex', 'Bill'}
Удаление элемента
remove
Для удаления конкретного элемента используется метод remove(). Если такой элемент отсутствует, будет вызвано исключение.
people = {"Alex", "Bill", "Carl"}
people.remove("Carl")
print(people) # {'Alex', 'Bill'}
people.remove("Dave") # KeyError
discard
В отличие от remove, если такой элемент отсутствует, исключение не возникает.
people = {"Alex", "Bill", "Carl"}
people.discard("Carl")
print(people) # {'Alex', 'Bill'}
people.discard("Dave") # исключения не возникает
pop
Удаляет и возвращает случайный элемент множества.
people = {"Alex", "Bill", "Carl", "Dave"}
print(people.pop()) # Dave
print(people) # {'Bill', 'Alex', 'Carl'}
print(people.pop()) # Bill
print(people) # {'Alex', 'Carl'}
Проверка наличия элемента
Для проверки наличия элемента используется оператор in.
people = {"Alex", "Bill", "Carl"}
print("Alex" in people) # True
Операции
Объединение

Для нахождения объединения двух множеств используется метод union() или оператор |.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
c = a.union(b)
print(c) # {'Carl', 'Dave', 'Bill', 'Alex'}
d = a | b
print(d) # {'Carl', 'Dave', 'Bill', 'Alex'}
Для изменения исходного множества по объединению используется метод update() или оператор |=.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
a.update(b) # или a |= b
print(a) # {'Carl', 'Dave', 'Bill', 'Alex'}
Пересечение

Для нахождения пересечения двух множеств используется метод intersection() или оператор &.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
c = a.intersection(b)
print(c) # {'Carl', 'Bill'}
d = a & b
print(d) # {'Carl', 'Bill'}
Для изменения исходного множества по пересечению используется метод intersection_update() или оператор &=.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
a.intersection_update(b) # или a &= b
print(a) # {'Carl', 'Bill'}
Разность

Для нахождения разности двух множеств используется метод difference() или оператор -.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
c = a.difference(b)
print(c) # {'Alex'}
d = a - b
print(d) # {'Alex'}
e = b - a
print(e) # {'Dave'}
Для изменения исходного множества по разности используется метод difference_update() или оператор -=.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
a.difference_update(b) # или a -= b
print(a) # {'Alex'}
Симметрическая разность

Для нахождения симметрической разности двух множеств используется метод symmetric_difference() или оператор ^.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
c = a.symmetric_difference(b)
print(c) # {'Dave', 'Alex'}
d = a ^ b
print(d) # {'Dave', 'Alex'}
Для изменения исходного множества по разности используется метод symmetric_difference_update() или оператор ^=.
a = {"Alex", "Bill", "Carl"}
b = {"Bill", "Carl", "Dave"}
a.symmetric_difference_update(b) # или a ^= b
print(a) # {'Dave', 'Alex'}
Методы и функции
Наиболее важные методы для работы с множествами:
set.add(x)- добавляет элементxв множество;set.remove(x)- удаляет элементxмножества, имеющий значениеx. Вызывает исключение, если такого элемента не существует;set.discard(x)- удаляет элементxмножества, имеющий значениеx. Не вызывает исключение, если такого элемента не существует;set.pop()- удаляет и возвращает случайный элемент множества;set.union()- возвращает объединение двух множеств. Той же функциональностью обладает оператор|;set.update()- изменяет исходное множество по объединению. Той же функциональностью обладает оператор|=;set.intersection()- возвращает пересечение двух множеств. Той же функциональностью обладает оператор&;set.intersection_update()- изменяет исходное множество по пересечению. Той же функциональностью обладает оператор&=;set.difference()- возвращает разность двух множеств. Той же функциональностью обладает оператор-;set.difference_update()- изменяет исходное множество по разности. Той же функциональностью обладает оператор-=;set.symmetric_difference()- возвращает симметрическую разность двух множеств. Той же функциональностью обладает оператор^;set.symmetric_difference_update()- изменяет исходное множество по симметрической разности. Той же функциональностью обладает оператор^=;set.isdisjoint(S)- возвращает False, если у множествsetиSесть общие элементы, иначе True;set.issubset(S)- возвращает True, если все элементы множестваsetпринадлежат множествуS, иначе False. Той же функциональностью обладает оператор<=. Отличие оператора<в том, что если множества равны, то он вернёт False;set.issuperset(S)- возвращает True, если все элементы множествоSпринадлежат множествуset, иначе False. Операторы>=и>имеют аналогичные функции операторам<=и<;set.copy()- возвращает копию множества.
Наиболее важные функции для работы с множествами:
len(set)- возвращает длину множества;sorted(list, key=func)- возвращает отсортированный список на основе функцииfunc(по умолчанию по возрастанию), не меняя множества.
Frozenset
Представляет вид множеств, которое не может быть изменено. Для создания используется функция frozenset() (по аналогии с функцией set()).
people1 = ["Alex", "Bill", "Carl"] people2 = frozenset(people2)
Поддерживает те же операции, что и обычное множество, кроме тех, которые изменяют само множество.