Множини
Множина (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