Skip to main content

Множини

Множина (set) - це структура даних, що містить невпорядкований набір унікальних елементів. Використання множин є доцільним у тому випадку, коли присутність елемента в наборі важливіша порядку слідування елементів та того, скільки разів даний елемент там зустрічається. Множина може містити елементи різних типів, проте ці елементи можуть бути лише незмінюваних типів даних: числа, рядки, кортежі.

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

На відміну від масивів, де елементи зберігаються у вигляді послідовного списку, у множинах порядок зберігання елементів невизначений. Це дозволяє виконувати операції типу "перевірити приналежність елемента множині" швидше, ніж просто перебираючи всі елементи множини.

Множини записуються, як перелік елементів, розділених комою та взятих в фігурні дужки: {1, 2, 3, 'Hello'}

Задання порожньої множини виконується з використанням функції set():

a = set()

Використання «{}» призведе до створення порожнього словника:

s={}

type(s) # <class ‘dict’>

Проте можна задати множину, перерахувавши її елементи, взяті в фігурні дужки «{}»:

s1 = {1, 2, 3}

Множину можна отримати з елементів об’єкта, що може ітеруватися (діапазон, список, рядок, словник, кортеж, файл і т.д.), використавши функцію set([iterable]). Проте варто пам’ятати, що до множини будуть включені лише унікальні елементи.

Можна перевірити приналежність деякого елемента до множини, використовуючи оператор in (значення in ім’я_множини).

Порівняння множин

Множини можна порівнювати між собою. Порівняння множин зводиться до перевірки, чи є множини рівними, або чи є певна множина підмножиною іншої.

set == other. Перевірка, чи множини set та other рівні. Повертає True, якщо всі елементи множини set належать множині other, і всі елементи множини other належать множині set, інакше – False.

set != other. Перевірка, чи є множини set та other не рівними. Повертає True, якщо приаймні один елемент множини set не належать множині other, або приаймні один елемент множини other не належать множині set, інакше – False

set <= other. Перевірка, чи є множина set підмножиною множини other. Повертає True, якщо всі елементи множини set належать множині other, інакше – False.

set < other. Повертає True, якщо всі елементи множини set належать множині other, але не всі елементи множини other належать множині set, інакше – False.

set.isdisjoint(other). Повертає True, якщо множини set і other не мають спільних елементів, інакше – False

set.issubset(other). Перевірка, чи є множина set підмножиною множини other. Аналогічно до set <= other.

set.issuperset(other). Перевірка чи є множина other підмножиною множини set. Аналогічно до set >= other

Методи множин

set.add(x). Додає елемент x до множини set

set.remove(x). Вилучає елемент x із множини set. Якщо такого елемента в множині немає, то виникає виняток KeyError.

set.discard(x). Вилучає елемент x із множини set. Якщо такого елемента в множині немає, то нічого не відбувається

set.pop(). Вилучає «перший» елемент з множини set та повертає його значення, як результат виконання функції. Так як множина – це невпорядкований набір, то не можна точно передбачити який з елементів буде взятий як перший. Якщо множина порожня, то виникає виняток KeyError

set.clear(). Очищує множину set (вилучає всі елементи з множини)

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

set.union(other) або set | other | .... Повертає об’єднання множин set і other. Множина-результат буде містити як елементи множини set, так і елементи множини other

set.intersection(other) або set & other & .... Повертає перетин множин set і other. Множина-результат буде містити елементи, які належать як множині set, так і множині other

set.difference(other) або set - other - .... Повертає різницю множин set і other. Множина-результат буде містити елементи множини set, які не належать множині other

set.symmetric_difference(other) або set ^ other. Повертає симетричну різницю множин set і other. Множина-результат буде містити елементи, які належать множинам set та other, але не належать обом множинам

set.update(other) або set |= other. Додає до множини set всі елементи множини other. Множина set буде містити об’єднання множин set і other

set.intersection_update(other) або set &= other. Вилучає з множини set всі елементи, які не входять до множинаи other. Множина set буде містити перетин множин set і other.

set.difference_update(other) або set -= other. Вилучає з множини set всі елементи, які входять до множини other. Множина set буде містити різницю множин set і other.

set.symmetric_difference_update(other) або set ^= other. Множина set буде містити симетричну різницю множин set і other