Множество (set) — неупорядоченная коллекция, хранящая набор уникальных значений и поддерживающая для них операции добавления, удаления и определения вхождения.
Также объект множество в Python поддерживает операции, аналогичные операциям с математическими множествами: объединение, пересечение, симметричная разность и вычитание множеств
Множество создается перечислением через запятую всех элементов внутри фигурных скобках.
>>> a = {1,2,3}
>>> a
{1, 2, 3}
В случае, если имеются повторяющиеся элементы внутри фигурных скобок, дубли во множестве все равно исчезнут. Множество не терпит среди элементов повторения.
>>> b = {1,2,3,3,2,1,4}
>>> b
{1, 2, 3, 4}
Пустое множество создается при помощи функции set()
>>> c = set()
>>> c
set()
Также при помощи функции set() можно создавать множества из других объектов. Если передать строку, то получим множество из символов этой строки.
>>> d = set('abracadabra')
>>> d
{'b', 'r', 'c', 'a', 'd'}
Также можно передавать функции set() списки и функцию range().
>>> e = set([1,3,3,1,2,3,3,7])
>>> e
{1, 2, 3, 7}
>>> f = set(range(1,4))
>>> f
{1, 2, 3}
Первый способ добавить элемент в множество это вызвать метод add(). При попытке добавить уже существующий элемент во множество никаких ошибок не возникнет
>>> a = {0,1,2,2,3}
>>> a
{0, 1, 2, 3}
>>> a.add(4)
>>> a
{0, 1, 2, 3, 4}
>>> a.add(3)
>>> a
{0, 1, 2, 3, 4}
Второй способ добавить элемент в множество это вызвать метод update() и передать ему итерируемый объект: список, строку, range() или множество. Метод update() будет поочередно добавлять каждый элемент итерируемого объекта внутрь множества.
>>> a
{0, 1, 2}
>>> a.update([1,2,3,4])
>>> a
{0, 1, 2, 3, 4}
>>> a.update('hi')
>>> a
{0, 1, 2, 3, 4, 'i', 'h'}
>>> a.update(range(0,6))
>>> a
{0, 1, 2, 3, 4, 5, 'i', 'h'}
Первый способ удалить элемент из множества это вызвать метод discard(value) и передать ему значение, которое хотите удалить. В случае, если в множестве нет значения, исключений не будет.
>>> a
{1, 2, 3}
>>> a.discard(3)
>>> a
{1, 2}
>>> a.discard(4)
>>> a
{1, 2}
Второй способ удалить элемент - это вызвать метод remove(value). В случае, если указанного значения в множестве нет, возбуждается исключение KeyError.
>>> a
{1, 2, 3}
>>> a.remove(2)
>>> a
{1, 3}
>>> a.remove(5)
Traceback (most recent call last):
File "", line 1, in
a.remove(5)
KeyError: 5
Третий способ удалить элемент - вызвать метод pop(). Т.к. множество является неупорядоченной коллекцией, данный метод удалит случайный элемент. При попытке удалить элемент из пустого множества возникнет исключение KeyError.
>>> a
{1, 2, 3}
>>> a.pop()
1
>>> a.pop()
2
>>> a.pop()
3
>>> a.pop()
Traceback (most recent call last):
File "", line 1, in
a.pop()
KeyError: 'pop from an empty set'
>>> a = {1,2,3}
>>> len(a)
3
>>> len(set())
0
>>> len(set([1,2,2]))
2
>>> a
{1, 2, 3}
>>> 2 in a
True
>>> 4 in a
False
>>> 5 not in a
True
При помощи оператора & можно выполнить пересечение множеств. В результат попадут те элементы, которые одновременно принадлежат двум множествам. При этом сами множества не меняются. Если нужно изменить само множество используйте эту операцию с присвоением &=.
>>> a = {1,2,3,4}
>>> b = {3,4,5,6}
>>> a & b
{3, 4}
>>> a,b
({1, 2, 3, 4}, {3, 4, 5, 6})
>>> a &= b
>>> a,b
({3, 4}, {3, 4, 5, 6})
При помощи оператора | можно выполнить объединение множеств. В результат попадут те элементы, которые принадлежат хотя бы одному из множеств. При этом сами множества не меняются. Если нужно изменить само множество используйте эту операцию с присвоением |=.
>>> a = {1,2,3,4}
>>> b = {3,4,5,6}
>>> a | b
{1, 2, 3, 4, 5, 6}
>>> a,b
({1, 2, 3, 4}, {3, 4, 5, 6})
>>> a |= b
>>> a,b
({1, 2, 3, 4, 5, 6}, {3, 4, 5, 6})
При помощи оператора - можно выполнить вычитание множеств. В результат попадут только те элементы, которые принадлежат первому множеству за исключение тех, которые входят во второе.
>>> a = {1,2,3,4}
>>> b = {3,4,5,6}
>>> a - b
{1, 2}
>>> b - a
{5, 6}
>>> a,b
({1, 2, 3, 4}, {3, 4, 5, 6})
>>> a -= b
>>> a,b
({1, 2}, {3, 4, 5, 6})