Python. Класи set, frozenset. Функції для роботи з множинами. Призначення, приклади використання

Класи set, frozenset. Функції для роботи з множинами. Призначення, приклади використання


Зміст


1. Призначення класів set, frozenset

Клас set використовується для створення та обробки так званих змінюваних (mutable) множин. Клас frozenset призначений для створення незмінюваних (immutable) або хешованих (hashable)  множин.

У класах set, frozenset реалізовано операції та функції для роботи з множинами. Ці операції та функції є стандартні і для їх використання не потрібно підключати додаткові модулі.

Усі функції можна розбити на такі основні категорії:

  • функції, які визначають характеристики однієї або декількох множин (наприклад, функція len та інші);
  • функції, які утворюють нову множину шляхом виконання деякої операції над іншими множинами (наприклад, функції union, intersection та інші);
  • функції, які визначають особливості в декількох множинах (наприклад, функції issubset, issuperset та інші);
  • функції, які змінюють поточну множину (наприклад, функції add, update, intersection_update та інші).

 

2. Функція len(). Кількість елементів у множині

Функція len() повертає кількість елементів у множині (потужність множини). Загальна форма опису функції

k = len(s)

де

  • s – деяка множина;
  • k – кількість елементів у множині s.

Приклад.

# Множини
# Функція len

x = { 1, 3, 'abcd', 2.85 }
length = len(x) # length = 4 - кількість елементів у множині

# пуста множина
length = len({}) # length = 0 - пуста множина

 

3. Функція isdisjoint(). Визначення наявності (відсутності) спільних елементів у множинах

Функція isdisjoint() повертає True, якщо дана множина не має спільних елементів з іншою. Згідно документації Python загальна форма виклику функції наступна

set.isdisjoint(other)

де

  • set – деяка множина (екземпляр класу set);
  • other – множина, з якою порівнюється множина set.

Приклад.

# Множини
# Функція isdisjont()

# множини мають спільні елементи
x = { 1, 3, 'abcd', 2.85 }
y = { 2, -4, 1 }
f = x.isdisjoint(y) # f = False - спільний елемент 1

# множини не мають спільних елементів
x = { 2, 3, 4 }
y = { 7 }
f = x.isdisjoint(y) # f = True
f = y.isdisjoint(x) # f = True

# можна й так
f = { 'a', 'b', 'f' }.isdisjoint({ 'c', 'z' }) # f = True

 

4. Функція union(). Об’єднання множин

Функція union() використовується для об’єднання множин. Загальна форма виклику функції наступна

union_set = set.union(other)

де

  • set, other – множини, які потрібно об’єднати;
  • union_set – результуюча (об’єднана) множина.

Функція повертає об’єднану множину. Виклик даної функції можна замінити операцією об’єднання множин |.

Приклад.

# Множини
# Функція union() - об'єднання множин

x = { 1.25, -12.232 }
y = { -3.88, 2.66 }
z = x.union(y) # z = { 1.25, -12.232, -3.88, 2.66 }
v = y.union(x) # v = { 1.25, 2.66, -3.88, -12.232 }

z = {2, 3}.union({3, 5}.union({7, 9})) # z = {2, 3, 5, 7, 9}


 

5. Функція intersection(). Перетин множин

Функція intersection() реалізує так званий “перетин множин”. При перетині множин, утворюється нова множина, яка містить спільні для двох множин елементи.

Згідно документації Python загальна форма функції наступна

intersection_set = set.intersection(*others)

де

  • set – поточна множина;
  • *others – одна або більше множин. Функція intersection() повертає новоутворену множину, яка є результатом перетину множини set та множини (множин) others;
  • intersection_set – результуюча множина.

У програмі функція також може бути замінена операцією &.

Приклад.

# Множини
# Функція intersection() - перетин множин

# перетин 2-х множин
x = { 2, 4, 6, 8 }
y = { 2, 8 }
z = x.intersection(y) # z = {8, 2}

# перетин 4-х множин
x1 = { 1, 2, 4, 5, 7, 9 }
x2 = { 1, 2, 3, 5, 4, 2, 8 }
x3 = { 1, 3, 4, 5, 7, 9 }
x4 = { 1, 2, 3, 4, 8, 9 }
z = x1.intersection(x2,x3,x4) # z = {1,4}

 

6. Функція difference(). Різниця множин

Функція difference() реалізує різницю множин. Загальна форма використання функції наступна

difference_set = set.difference(*others)

де

  • set – множина елементів від якої потрібно відняти множину або множини others;
  • others – деяка множина або декілька множин, розділених комою;
  • difference_set – результуюча множина.

Функція difference() може бути замінена операцією (мінус).

Приклад.

# Множини
# Функція difference() - різниця множин

# різниця 2-х множин
x = { 2, 4, 6, 8 }
y = { 2, 8 }
z = x.difference(y) # z = {4, 6}
v = y.difference(x) # v = {}

# різниця 3-х множин
x = { 1, 2, 3, 4, 5, 6 }
y = { 3, 5 }
z = { 2, 4, 5 }
v = x.difference(y,z) # v = {1, 6}

 

7. Функція symmetric_difference(). Симетрична різниця

Функція symmetric_difference() реалізує симетричну різницю, при якій з двох множин віднімаються спільні для цих множин елементи. Загальна форма функції наступна

symm_differ_set = set.symmetric_difference(other)

де

  • set, other – множини, що розглядаються;
  • symm_differ_set – результуюча множина.

Функція повертає нову множину, яка не містить елементів, які є в обох множинах set та other. Дана функція може бути замінена оператором симетричної різниці ^.

Приклад.

# Множини
# Функція symmetric_difference()

x = { 1, 2, 3, 4, 5 }
y = { 1, 3, 5 }
z = x.symmetric_difference(y) # z = {2, 4}

 

8. Функція copy(). Копія множини

Функція copy() виконує копіювання множин. Функція не отримує параметрів. Функція повертає копію множини. Загальна форма функції

copy_set = set.copy()

де

  • set – поточна множина, з якої потрібно зробити копію;
  • copy_set – результуюча множина-копія.

Приклад.

# Множини
# Функція copy() - копія з множини

x = { 1, 3, 8 }
y = x.copy() # y = { 8, 1, 3 }

z = { 5, 6, 7 }.copy() # z = { 5, 6, 7 }

 

9. Функція update(). Оновлення множини з допомогою операції додавання

Функція update() оновлює множину, додаючи до неї нові елементи. Загальна форма використання функції наступна

set.update(*others)

де

  • set – множина, яку потрібно оновити;
  • others – множина або декілька множин, які додаються до множини set.

Функція оновлює поточну множину, тому не викликається у правій частині оператора присвоєння.

Дана функція виконує операцію |= над множинами.

Приклад.

# Множини
# Функція update()

# 1. Додати одну множину
x = { 5, 6 }
x.update({2, 8, 10}) # додати до множини x елементи 2, 8, 10

# 2. Додати одну і більше множин
x = { 7 }
y = { 1, 5, 9 }
x.update(y) # x = {1, 9, 5, 7}
x.update({15}, {2}, {'abc'}) # x = {1, 2, 'abc', 5, 7, 9, 15}

 

10. Функція intersection_update(). Оновлення множини з допомогою операції перетину

Функція intersection_update() виконує оновлення поточної множини з допомогою перетину множин. Загальна форма використання функції наступна

set.intersection_update(*others)

де

  • set – множина яка оновлюється;
  • others – одна або декілька множин, які потрібно оновити з допомогою операції перетину.

Дана функція виконує операцію &= над множинами.

Приклад.

# Множини
# Функція intersection_update()

# Оновлення поточної множини з допомогою перетину
x = { 1, 2, 3, 4, 5, 6, 7 }
x.intersection_update({3,4,5})

# Випадок з декількома множинами
x = { 1, 2, 3, 4, 5, 6, 7 }
x.intersection_update({5,6,7,8}, {1,2,6,8}) # x = {6}

 

11. Функція difference_update(). Різниця множин

Функція difference_update() реалізує оновлення множини з допомогою операції віднімання множин. Загальна форма використання функції

set.difference_update(*others)

де

  • set – множина, яка оновлюється;
  • others – одна або декілька множин, які послідовно віднімаються від множини set.

Функція difference_update() може бути замінена однією або декількома операціями (віднімання множин). Функція замінює операцію –=.

Приклад.

# Множини
# Функція difference_update()

# Оновлення поточної множини з допомогою віднімання
x = { 1, 2, 3, 4, 5, 6, 7, 8, 9}
y = { 2, 4, 6, 8 }
x.difference_update(y) # x = {1, 3, 5, 7, 9}

# Віднімання декількох множин
x = set('abcdef') # x = {'a', 'c', 'b', 'e', 'd', 'f'}
x.difference_update({'c'}, {'d'}, {'c','e'}) # x = {'a','b','f'}

 

12. Функція add(). Додати елемент до множини

Функція add() призначена для додавання елементу до множини. Загальна форма використання функції наступна

set.add(elem)

тут set – множина, до якої додається елемент elem. Елемент може бути будь-якого простого типу.

Приклад.

# Множини
# Функція add() - додавання елементу до множини

# сформувати множину цілих чисел в циклі з допомогою add()
n = int(input("Enter number:"))

i=1
x = set([]) # x = { } - на початку пуста множина
while i<=n:
    x.add(i) # виклик функції add()
    i=i+1

# Вивести x
print('x = ', x)

# Додавання елементів різних типів
y = set([])
y.add(5) # ціле число
y.add(8.76) # дійсне число
y.add('abc') # рядок або символ
y.add(False) # логічний тип

Результат виконання програми

Enter number:5
x = {1, 2, 3, 4, 5]}
y = {False, 8.76, 'abc', 5]}

 

13. Функція remove(). Видалення елементу з множини

Функція remove() видаляє елемент з множини. Загальна форма оголошення функції

set.remove(elem)

тут set – множина, з якої потрібно видалити елемент elem.

Якщо при виклику функції елемент elem не міститься в множині, то викликається виключення KeyError, яке виглядає приблизно так

KeyError: elem

Приклад.

# Множини
# Функція remove() - видалення елементу до множини

x = {1,2,3,4,5}
x.remove(3) # x = {1, 2, 4, 5}
x.remove(4) # x = {1, 2, 5}

 

14. Функція discard(). Видалення елементу з множини без генерування виключення

Функція discard() видаляє елемент з множини, якщо елемент є наявний в ній. Загальна форма використання функції наступна

set.discard(elem)

тут set – множина, з якої видаляється елемент elem. На відміну від функції remove(), дана функція не генерує помилку у випадку, якщо елемент elem відсутній у множині set.

Приклад.

# Множини
# Функція discard() - видалення елементу з множини

x = {1,2,3,4,5}

x.discard(3) # x = {1,2,4,5}
x.discard(9) # x = {1,2,4,5}
x.discard(1) # x = {2,4,5}

 

15. Функція pop(). Витягнути випадковий елемент з множини

Функція pop() витягує елемент з множини. Функція повертає витягнутий елемент. Загальна форма використання функції

elem = set.pop()

тут set – непуста множина, з якої витягується елемент elem. Після витягування множина set не містить елементу elem.

Якщо множина є пустою, то генерується виключення KeyError. Це виключення викликається, якщо не знайдено ключа в множині.

Приклад.

# Множини
# Функція pop() - витягування елементу з множини

x = {1,2,3,4,5,6,7,8,9}

elem = x.pop()
print('elem = ', elem)
print('x = ', x)

Результат виконання програми

elem = 1
x = {2, 3, 4, 5, 6, 7, 8, 9}

 

16. Функція clear(). Видалити всі елементи з множини

Функція clear() видаляє всі елементи з множини. Загальна форма використання функції наступна

set.clear()

тут set – множина, з якої видаляються елементи.

Приклад.

# Множини
# Функція clear()
x = set('BestProg') # створити множину
print('x = ', x) # вивести її на екран

x.clear() # очистити множину
print('x = ', x)

Результат виконання програми

x = {'B', 'e', 'g', 'o', 'P', 's', 'r', 't'}
x = { }

 


Зв’язані теми