Перейти к содержанию

Python работа с множествами

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

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

В фигурных скобках {} идет перечисление элементов

set1 = {элемент1, элемент2, элемент3}

In [614]: set1 = {1,2,3,4,5,4,3,7,6}

In [615]: set1
Out[615]: {1, 2, 3, 4, 5, 6, 7}

In [616]: print(set1)
{1, 2, 3, 4, 5, 6, 7}

Работа со множествами

Получение множества из списка set()

In [617]: vlans1 = [1,2,3,4,5,4,3,7,6]

In [618]: set1 = set(vlans1)

In [619]: vlans1
Out[619]: [1, 2, 3, 4, 5, 4, 3, 7, 6]

In [620]: set1
Out[620]: {1, 2, 3, 4, 5, 6, 7}

Конвертация в список list()

In [627]: set1
Out[627]: {1, 2, 3, 4, 5, 6, 7}

In [628]: vlans_uni = list(set1)

In [629]: vlans_uni
Out[629]: [1, 2, 3, 4, 5, 6, 7]

Добавление элемента add()

In [632]: set1
Out[632]: {1, 2, 3, 4, 5, 6, 7}

In [633]: set1.add(8)

In [634]: set1
Out[634]: {1, 2, 3, 4, 5, 6, 7, 8}

# если попробовать добавить элемент, 
# который уже есть в множестве, то множество не изменится
In [636]: set1.add(1)

In [637]: set1
Out[637]: {1, 2, 3, 4, 5, 6, 7, 8}

Удалить элемент discard()

In [637]: set1
Out[637]: {1, 2, 3, 4, 5, 6, 7, 8}

In [638]: set1.discard(7)

In [639]: set1
Out[639]: {1, 2, 3, 4, 5, 6, 8}

Удалить множество clear()

In [639]: set1
Out[639]: {1, 2, 3, 4, 5, 6, 8}

In [640]: set1.clear()

In [641]: set1
Out[641]: set()

Сделать копию copy()

In [649]: set1
Out[649]: {1, 2, 3, 4, 5, 6, 7}

In [650]: set2 = set1.copy()

In [651]: set2
Out[651]: {1, 2, 3, 4, 5, 6, 7}

Пересечение множеств & или intersection()

In [653]: set1 = {1,2,3,4,5}

In [654]: set2 = {2,3,20,30,40,50}

In [655]: set1 & set2
Out[655]: {2, 3}

# то же самое
In [657]: set1.intersection(set2)
Out[657]: {2, 3}

Объединения множеств | или union()

In [661]: set1 = {1,2,3,4,5}

In [662]: set2 = {2,3,20,30,40,50}

In [663]: set1 | set2
Out[663]: {1, 2, 3, 4, 5, 20, 30, 40, 50}

# то же самое
In [665]: set1.union(set2)
Out[665]: {1, 2, 3, 4, 5, 20, 30, 40, 50}

Разница в множествах difference() или вычитание множеств

In [666]: set1 = {1,2,3,4,5}

In [667]: set2 = {2,3,20,30,40,50}

# что есть в set1 и нет в set2
In [668]: set1.difference(set2)
Out[668]: {1, 4, 5}

# то же самое
In [673]: set1 - set2
Out[673]: {1, 4, 5}


# что есть в set2  и нет в set1
In [669]: set2.difference(set1)
Out[669]: {20, 30, 40, 50}

# то же самое
In [674]: set2 - set1
Out[674]: {20, 30, 40, 50}

```


Последнее обновление: 2023-05-29