Множество

15 декабря 2019



Множество(set()) - это неупорядоченная структура данных, содержащая не повторяющиеся элементы в случайном порядке.
Множество (frozenset()) - это неизменяемая неупорядоченная структура данных, содержащая не повторяющиеся элементы в случайном порядке. Единственным отличием от set()является то, что frozenset() не изменяемая структура данных. Ситуация аналогична со списками и кортежами.

Инициализация множества:
x = set()
или
x = {"a", "b", "c", "d", "e"}
Нельзя создать пустое множество x = {} так, как это будет объявление словаря.

Главной особенностью множества является то, что в нем не может быть повторяющихся элементов.

x = set('test')
print(x) # {'e', 's', 't'}

В итоге осталась только одна буква t.

Также множество является неупорядоченной структурой, в следствии чего все элементы хранятся в одной куче и извлекаются в произвольном порядке.

x = {"a", "b", "c", "d", "e"}
print(x) # {'d', 'e', 'b', 'c', 'a'}

Часто множества используются для удаления повторяющихся элементов:

x = {"test", "message", "hello", "world", "message"}
print(x) # {'world', 'hello', 'test', 'message'}

В итоге был удален повторяющийся элемент message.

Основные операции

x.add("new") - добавить новый элемент в множество.
x.remove("new") - удаляет элемент из множества.
x.discard("new") - Тоже самое только с проверкой на наличие в множестве.
x.pop() - удаляет первый элемент, но так как множества не упорядочены, нельзя сказать какой элемент будет удален.
x.clear() - Удалить все элементы множества.

Операции над множеством

Операции итог которых может быть присвоен новой переменной:

x.isdisjoint(y) - True, если x и y не имеют общих элементов.
x == y - Сравнение. True если множества одинаковы
x.issubset(y) или (x <= y) - все элементы x присутствуют в y.
x.issuperset(y) или (x >= y) - все элементы y присутствуют в x
x.union(y) или (x | y ) - объединение множеств. Возможно указание нескольких множеств.
x.intersection(y) или (x & y) - Общие элементы
x.difference(y) или (x - y) - Удалить элементы y из множества x
x.symmetric_difference(y) или (x ^ y) - Множество из уникальных элементов для обоих множеств

Операции изменяющие множества

Операции изменяющие текущее множество:

x.update(y) или (x |= y) - объединение.
x.intersection_update(y) или (x &= y) - пересечение.
x.difference_update(y) или (x -= y) - Удалить элементы y из множества x
x.symmetric_difference_update(y) или (x ^= y) - Множество из уникальных элементов для обоих множеств