Перейти до змісту

Множина (Set)

Множина — це змінюваний невпорядкований набір унікальних хешованих об'єктів.

Множини використовуються для тестування членства, видалення дублікатів із послідовності та обчислення математичних операцій, таких як перетин, об'єднання, різниця та симетрична різниця.

Множина в Python - це послідовність елементів у фігурних дужках, які розділені між собою комою.

vlans = {1, 2, 3, 4}

Варіанти створення множин

Не можна створити порожню множину за допомогою літералу, оскільки в такому випадку це буде не множина, а словник:

In [1]: set1 = {}

In [2]: type(set1)
Out[2]: dict

порожню множину можна створити таким чином:

In [3]: set2 = set()

In [4]: type(set2)
Out[4]: set

Створення множини із рядка:

In [5]: set('long long long long string')
Out[5]: {' ', 'g', 'i', 'l', 'n', 'o', 'r', 's', 't'}

Створення множини зі списку:

In [6]: set([10, 20, 30, 10, 10, 30])
Out[6]: {10, 20, 30}

Корисні методи для роботи з множинами

add

Метод add додає елемент у множину:

In [1]: set1 = {20, 10, 30, 40}

In [2]: set1.add(50)

In [3]: set1
Out[3]: {30, 20, 10, 50, 40}

discard

Метод discard видаляє елементи, не видаючи помилку, якщо елемента немає в множині:

In [3]: set1
Out[3]: {10, 20, 30, 40, 50}

In [4]: set1.discard(55)

In [5]: set1
Out[5]: {10, 20, 30, 40, 50}

In [6]: set1.discard(50)

In [7]: set1
Out[7]: {10, 20, 30, 40}

clear

Метод clear видаляє елементи множини:

In [8]: set1 = {10, 20, 30, 40}

In [9]: set1.clear()

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

Операції з множинами

Множини корисні тим, що з ними можна робити різні операції і знаходити об'єднання множин, перетин.

set

Об'єднання множин можна отримати за допомогою методу union або оператора |:

In [1]: vlans1 = {10, 20, 30, 50, 100}
In [2]: vlans2 = {100, 101, 102, 200}

In [3]: vlans1.union(vlans2)
Out[3]: {10, 20, 30, 50, 100, 101, 102, 200}

In [4]: vlans1 | vlans2
Out[4]: {10, 20, 30, 50, 100, 101, 102, 200}

Перетин множин можна отримати за допомогою методу intersection або оператора &:

In [5]: vlans1 = {10, 20, 30, 50, 100}
In [6]: vlans2 = {100, 101, 102, 200}

In [7]: vlans1.intersection(vlans2)
Out[7]: {100}

In [8]: vlans1 & vlans2
Out[8]: {100}

set