В соответствии с математическими обозначениями, множества пишутся в фигурных скобках. Элемент может содержаться в множестве только один раз. Порядок элементов в множестве не имеет значения, поэтому питон их сортирует. Элементы множества могут быть любых типов. Множества используются существенно реже, чем списки. Но иногда они бывают весьма полезны. Например, когда я собирался делать апгрейд системы на сервере, я написал на питоне программу, которая строила множество пакетов, установленных в системе до апгрейда; множество пакетов, имеющихся на инсталляционных CD; имеющихся на основных сайтах с дополнительными пакетами, и т.д. И она мне помогла восстановить функциональность после апгрейда.
s={0,1,0,5,5,1,0}
s
Принадлежит ли элемент множеству?
1 in s, 2 in s, 1 not in s
Множество можно получить из списка, или строки, или любого объекта, который можно использовать в for
цикле (итерабельного).
l=[0,1,0,5,5,1,0]
set(l)
set('абба')
Как записать пустое множество? Только так.
set()
Дело в том, что в фигурных скобках в питоне пишутся также словари (мы будем их обсуждать в следующем параграфе). Когда в них есть хоть один элемент, можно отличить словарь от множества. Но пустые фигурные скобки означают пустой словарь.
Работать с множествами можно как со списками.
len(s)
for x in s:
print(x)
Это генератор множества (set comprehension).
{i for i in range(5)}
Объединение множеств.
s2=s|{2,5}
s2
Проверка того, является ли одно множество подмножеством другого.
s<s2, s>s2, s<=s2, s>=s2
Пересечение.
s2&{1,2,3}
Разность и симметричная разность.
s2-{1,3,5}
s2^{1,3,5}
Множества (как и списки) являются изменяемыми объектами. Добавление элемента в множество и исключение из него.
s2.add(4)
s2
s2.remove(1)
s2
Как и в случае +=
, можно скомбинировать теоретико-множественную операцию с присваиванием.
s2|={1,2}
s2
Существуют также неизменяемые множества. Этот тип данных называется frozenset
. Операции над такими множествами подобны обычным, только невозможно изменять их (добавлять и исключать элементы).