Python. Множини. Основні поняття. Створення множини. Операція in. Операції над множинами, які утворюють нову множину

Множини. Основні поняття. Створення множини. Операція in. Операції над множинами, які утворюють нову множину


Зміст


1. Поняття множини

Мова програмування Python має засоби для роботи з множинами. У Python множина – це невпорядкована колекція елементів, яка має наступні особливості:

  • усі елементи множини є унікальні. Іншими словами, у множині не може бути двох однакових елементів;
  • елементи множини є незмінюваними об’єктами;
  • елементи множини можуть бути різних типів.

У Python множина представлена окремим типом даних. Множини підтримують операції, що існують в теорії множин з курсу математики. Множина може бути пустою (не містити елементів).

Приклади множин у вигляді літералів.

# множина, яка містить три елементи: 'a', 5, 'textbook'
{'a', 5, "textbook"}

# множина, яка містить числа від 0 до 5
{0,1,2,3,4,5}

# пуста множина
{ }

 

2. Створення об’єкту типу “множина”. Функція set(). Приклади

Щоб створити об’єкт типу “множина” можна використати один з наступних  способів:

  • з допомогою присвоєння цьому об’єкту множини елементів фігурних дужках { };
  • з допомогою присвоєння об’єкту деякого результату, що був повернутий функцією set(). Функція set() дозволяє перетворити в множину об’єкти інших типів;
  • з допомогою присвоєння об’єкту результату функції frozenset(). Функція frozenset() є конструктором класу frozenset. Ця функція дозволяє отримати незмінну (immutable) множину;
  • з допомогою присвоєння об’єкту результату деякої операції над множинами (наприклад, операції & перетину множин);
  • з допомогою присвоєння об’єкту результату функції, яка повертає деяку множину.

Приклад.

# Множини
# Створення об'єкту типу "множина"

# 1. З допомогою фігурних дужок { }
x = { 0, 0, 1, 2, 3 } # x = {0, 1, 2, 3} - елементи в множині не повторюються
y = { 'a', "textbook", 5 } # y = {'a', 'textbook', 5}
z = { True, False, 0.25, 'Hello' } # z = {False, True, 'Hello', 0.25}

# 2. З допомогою функції set
x = set(['a', 5, "textbook", 5]) # x = {5, 'textbook', 'a'}
y = set('Hello!') # y = {'l', 'o', 'e', '!', 'H'}
z = set([0,1,2,3,4,5]) # z = {0, 1, 2, 3, 4, 5}

# 3. З допомогою деякої операції
x = { 1, 2, 3, 4 } & { 3, 2} # x = {2, 3}
y = { 1, 2, 3, 4 } - { 1, 4} # y = {2, 3}
z = { 'a', 'c', 5 } | { True } # z = {'a', 5, 'c', True}

# 4. З допомогою функції frozenset
x = frozenset([1, 2, 3, 4]) # x - незмінювана (immutable) множина

# 5. З допомогою функції, яка повертає множину
x = { 1, 2, 3, 4 } 
y = { 3, 5, 7 } 
z = x.union(y) # z = { 1, 2, 3, 4, 5, 7 }

 

3. Базові операції над множинами. Перелік

Мова Python підтримує наступні операції над множинами:

  • in – перевірка елементу на входження в множину;
  • (мінус) – різниця множин;
  • | – об’єднання множин;
  • & – перетин множин;
  • ^ – симетрична різниця.


 

4. Операції in, not in. Перевірка елементу на входження. Приклад

Операція in використовується у випадках, коли потрібно визначити чи входить елемент у множину. Загальна форма операцї наступна:

Item in Set

де

  • Item – деякий об’єкт (елемент), який потрібно перевірити в входження в множину Set. Якщо об’єкт Item є в множині Set, то результат операції буде True. В противному випадку результат операції буде False;
  • Set – деяка множина.

Як правило, операція in використовується в операторах перевірки умови.

У програмах оператор in можна поєднувати з оператором not. У цьому випадку загальна форма інструкції not in наступна

Item not in Set

Результат операції not in завжди протилежний результату операції in.

Приклад 1.

# Множини
# Операція in. Перевірка входження елементу в множину

# 1. Застосування in
x = { 3, 8, 'a', 'Hello' } # множина елементів
a = 'Hello' # елемент

if a in x:
    print('The element is in set')
else:
    print('The element is not in set')

Приклад 2. Поєднання оператора in з логічним оператором not.

# Застосування конструкції not in
day = { 'Sun', 'Mon', 'Tue', 'Wed', 'Thi', 'Fri', 'Sat'}

# Ввести день з клавіатури
inputDay = str(input('Input day of week: '))

# Перевірка
if inputDay not in day:
    print('Wrong day')
else:
    print('OK')

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

Input day of week: sunday
Wrong day

 

5. Операція . Різниця множин. Приклад

В Python операція різниця множин позначається символом (мінус). Крім того для визначення різниці множин у Python реалізовано функцію difference().

Загальна форма операції наступна:

set1set2

де

  • set1 – множина, від якої віднімаються (видаляються) елементи, що розміщені в множині set2. При відніманні розглядаються тільки ті елементи, які є спільними (однаковими) для двох множин. У результаті створюється нова множина, яка містить елементи множини set1, яких немає в множині set2;
  • set2 – множина яка визначає елементи, що потрібно відняти (видалити) з множини set1.

Операція різниці множин може утворювати ланцюги. У цьому випадку загальна форма операції наступна:

set1 - set2 - set3 - ... - setN

Приклад.

# Множини
# Операція -. Різниця множин
# Однотипні елементи
x = { 1, 2, 3, 5 }
y = { 2, 8 }
z = x - y # z = {1, 3, 5}
v = y - x # v = {8}

# Різнотипні елементи
x = { 'a', True, 'Text' }
y = { 2, 8, 16.23, 'a' }
z = x - y # z = {True, 'Text'}

 

6. Операція |. Об’єднання множин. Приклад

Об’єднання множин a та b – це утворення такої множини c, елементи якої є в множині a або є в множині b. У мові Python для реалізації об’єднання множин можна використати операцію | або функцію union().

Операція об’єднання множин | має наступну загальну форму

set1 | set2

де

  • set1, set2 – деякі множини, які об’єднуються. Результуюча множина містить усі елементи множини set1 та усі елементи множини set2.

Операція об’єднання множин | може утворювати ланцюги як показано нижче

set1 | set2 | set3 | ... | setN

Приклад.

# Множини
# Операція |. Об'єднання множин
x = { 'a', 5, True }
y = { 2, 3.85, False }
z = x | y # z =   {3.85, True, False, 2, 5, 'a'}
v = x | y | { 170 } # v = {3.85, True, False, 2, 5, 'a', 170}

 

7. Операція &. Перетин множин. Приклад

Перетин двох множин a, b – це множина c, що містить спільні елементи множин a, b. Кожен елемент множини c розміщується у множині a а також у множині b.

У мові Python для реалізації перетину множин використовується операція & або функція intersection().

Операція перетину множин & має наступну загальну форму

set1 & set2

де

  • set1, set2 – множини, для яких потрібно реалізувати так званий “перетин”. У результаті утворюється нова множина, яка містить елементи що входять в обидві множини set1 та set2. Елементи, що входять тільки в одну з множин set1, set2 відсікаються.

Операція перетину множин & може утворювати ланцюги

set1 & set2 & set3 & ... & setN

Приклад.

# Множини
# Операція &. Перетин множин
# Результат - пуста множина, немає спільних елементів
x = { 'a', 5, True }
y = { 2, 3.85, False }
z = x & y # z = {} - пуста множина

# Результат - непуста множина
x = { 3, 2.25, True, 'abc' }
y = { 2.25, 'abcd', 3, 7, True}
z = x & y # z = {True, 2.25, 3}

 

8. Операція ^. Симетрична різниця. Приклад

Для отримання симетричної різниці множин у мові Python можна використовувати операцію ^ або функцію symmetric_difference().

Операція симетричної різниці множин ^ є зворотною до операції перетину множин &. У цьому випадку в результуючу множину включаються елементи, які не є спільними.

Загальна форма операції ^ наступна

set1 ^ set2

де

  • set1, set2 – множини для яких реалізується симетрична різниця. У результаті утворюється нова множина, яка містить елементи, що не є спільними для множин set1, set2.

Операція ^ може утворювати ланцюги

set1 ^ set2 ^ set3 ^ ... ^ setN

Приклад.

# Множини
# Операція ^. Симетрична різниця множин

# Результат - пуста множина, немає спільних елементів
x = { 1, 3, 5 }
y = { 3, 5, 1 }
z = x ^ y # z = {} - пуста множина

# Значення 3 в множинах є спільне, тому воно не включене в результат
x = { 1, 3, 5 }
y = { 2, 3, 8 }
z = x ^ y # z = {1, 2, 5, 8} - без значення 3

# Значення 'b', 'c' є спільними, тому вони викидаються з результату
x = { 'a', 'b', 'c' }
y = { 'x', 'b', 'c', 'd', 'e' }
z = x ^ y # z = {'e', 'a', 'd', 'x'}

 

9. Приклад застосування множин для фільтрування списків

У прикладі визначаються числа, які входять у список. Використовується властивість множини, яка твердить, що у множині елемент не може повторюватись два рази.

# Застосування множин для фільтрування списків
# 1. Створити список чисел від 1 до 10
List = [5, 3, 2, 3, 4, 2, 3, 7, 9, 5, 7]

# 2. Визначити, які числа від 1 до 10 входять у список List
numbers = set(List) # numbers = [2, 3, 4, 5, 7, 9]

# 3. Вивести результат
print('numbers = ', numbers)

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

numbers = [2, 3, 4, 5, 7, 9]

 


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