MyTetra Share
Делитесь знаниями!
Распространенные операции над множествами (set) в Python
04.03.2019
16:43
Автор: br0ke
Текстовые метки: python, data, structure, set, frozenset, len, in, isdisjoint, issubset, issuperset, union, update, intersection, difference, difference_update, xor, copy, add, remove, discard, pop, clear
Раздел: Информационные технологии - Python - Основы языка

Создать множество из литерала:


>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}

>>> x

{'qux', 'foo', 'bar', 'baz'}


>>> x = {'q', 'u', 'u', 'x'}

>>> x

{'x', 'q', 'u'}


Создать пустое множество:


>>> x = set()

>>> type(x)

<class 'set'>

>>> x

set()


Создать множество из итерируемого объекта:


>>> x = set(['foo', 'bar', 'baz', 'foo', 'qux'])

>>> x

{'qux', 'foo', 'bar', 'baz'}


>>> x = set(('foo', 'bar', 'baz', 'foo', 'qux'))

>>> x

{'qux', 'foo', 'bar', 'baz'}


Убрать повторы из списка:


>>> words = ['hello', 'daddy', 'hello', 'mum']

>>> set(words)

{'hello', 'daddy', 'mum'}


Длина множества:


len(s)


Проверка, входит ли элемент во множество:


x in s


Проверка, что два множества не пересекаются:


s.isdisjoint(other)


Проверка, что два множества совпадают:


s == other


Проверка, что все элементы s принадлежат other:


s.issubset(other)

s <= other


Проверка, что все элементы other принадлежат s:


s.issuperset(other)

s >= other


Получить объединение нескольких множеств:


s.union(other1, other2, ...)

s | other1 | other2 ...



Объединение множеств на месте (изменяет s):


s.update(other1, other2, ...)

set |= other1 | other2


Получить пересечение нескольких множеств:


s.intersection(other1, other2, ...)

s & other1 & other2 ...


Пересечение нескольких множеств на месте (изменяет s):


s.intersection_update(other1, other2, ...)

s &= other1 & other2 ...


Получить разность нескольких множеств (множество всех элементов s, не принадлежащих ни одному из other):


s.difference(other1, other2, ...)

s - other1 - other2 ...


Разность нескольких множеств на месте (изменяет s):


s.difference_update(other1, other2, ...)

s -= other1 | other2


Исключающая разность (XOR, множество элементов, встречающихся в одном множестве, но не встречающееся в обоих одновременно):


s.symmetric_difference(other)

s ^ other


Исключающая разность на месте (изменяет s):


s.symmetric_difference_update(other)

s ^= other


Получить копию множества:


s.copy()


Добавить элемент во множество:


s.add(elem)


Удалить элемент из множества:


s.remove(elem)

s.remove(elem_not_in_set) # будет KeyError


Удалить элемент из множества, если он там есть:


s.discard(elem)


Извлечь один (первый, но порядок в множестве не определен, поэтому может быть любой) элемент из множества:


s.pop()


Очистить множество:


s.clear()



frozenset -- это неизменяемая версия set, в нём поддерживаются все операции, которые не меняют исходное множество. Зато frozenset можно использовать в качестве ключа словаря, а set -- нельзя.

 
MyTetra Share v.0.52
Яндекс индекс цитирования