4.1 Отримання підмножини за правилом
Підмножина — це множина, всі елементи якої належать іншій, більшій множині. У Python є кілька вбудованих методів і операторів для роботи з підмножинами. Нижче я розкажу, як отримати підмножини, як перевірити, чи є одна множина підмножиною іншої, і як використовувати ці знання в різних сценаріях.
Використання циклу for
Ти можеш створити порожню множину і додавати в неї елементи, що задовольняють умові, за допомогою циклу for.
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set()
for x in my_set:
if x % 2 == 0:
even_set.add(x)
print(even_set) # Вивід: {2, 4, 6, 8, 10}
Це найпростіший і найочевидніший спосіб створити підмножину. Але є ще кілька інших і більш компактних
Використання функції filter()
Функціяfilter() застосовує функцію до кожного елемента і повертає тільки ті елементи, для яких функція повернула True. Результат необхідно перетворити назад у множину.
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set(filter(lambda x: x % 2 == 0, my_set))
print(even_set) # Вивід: {2, 4, 6, 8, 10}
Всередині функції filter() використовується лямбда-вираз – це такий короткий спосіб задати службову функцію або правило для фільтрації. Про лямбди я розповім буквально через кілька лекцій.
4.2 Використання генераторів множин
Пам'ятаєш List Comprehension ? Коли ми в квадратних дужках задавали швидкий спосіб генерації списку і його елементів? Цей синтаксичний інструмент мав такий вигляд:
[вираз for змінна in послідовність]
Де:
-
змінна— ідентифікатор деякої змінної, -
послідовність— послідовність значень, які приймає дана змінна (це може бути список, рядок або об'єкт, отриманий за допомогою функції range), -
вираз— деякий вираз, як правило, залежний від використаної в генераторі змінної, яким будуть заповнені елементи списку.
Для множин є аналогічна функція, тільки потрібно використовувати фігурні дужки:
{вираз for змінна in послідовність}
Генератори множин дозволяють легко і лаконічно створювати нові множини на основі існуючих, застосовуючи умови фільтрації.
Ось так можна відбирати тільки парні елементи з множини:
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = {x for x in my_set if x % 2 == 0}
print(even_set) # Вивід: {2, 4, 6, 8, 10}
А ось так тільки рядки:
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, "apple", "banana"}
even_set = {x for x in my_set if type(x) == str}
print(even_set) # Вивід: {"apple", "banana"}
4.3 Перевірка наявності елемента
Однією з основних операцій, які можна виконувати з множинами, є перевірка наявності елемента у множині. У Python існує кілька способів зробити це. Давайте розглянемо різні методи перевірки, що елемент присутній у множині.
Використання оператора in
Найбільш поширений і зручний спосіб перевірки наявності елемента у множині — це використання оператора in. Цей метод повертає True, якщо елемент присутній у множині, і False у протилежному випадку.
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # Вивід: True
print(6 in my_set) # Вивід: False
Використання оператора not in
Оператор not in є протилежністю оператора in і використовується для перевірки, що елемент відсутній у множині. Він повертає True, якщо елемент не присутній у множині, і False у протилежному випадку.
my_set = {1, 2, 3, 4, 5}
print(6 not in my_set) # Вивід: True
print(3 not in my_set) # Вивід: False
Використання циклів
Хоча використання циклів для перевірки наявності елемента у множині не є найбільш ефективним способом, він може бути корисним у ситуаціях, коли ти працюєш з більш складними структурами даних або виконуєш додаткові операції.
my_set = {1, 2, 3, 4, 5}
element = 3
found = False
for item in my_set:
if item == element:
found = True
break
print(found) # Вивід: True
4.4 Перевірка вкладеності множин
Python надає оператор <= і метод issubset() для перевірки, чи є одна множина підмножиною іншої.
Використання оператора <=
Оператор <= дозволяє легко перевірити, чи є одна множина підмножиною іншої.
set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
print(set_a <= set_b) # Вивід: True
print(set_b <= set_a) # Вивід: False
Використання методу issubset()
Метод issubset() виконує ту ж функцію, що і оператор <=, і повертає True, якщо всі елементи однієї множини містяться в іншій.
set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
print(set_a.issubset(set_b)) # Вивід: True
print(set_b.issubset(set_a)) # Вивід: False
Перевірка на надмножину
Аналогічно підмножинам, ти можеш перевірити, чи є одна множина надмножиною іншої, використовуючи оператор >= і метод issuperset().
Використання оператора >=
set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
print(set_a >= set_b) # Вивід: True
print(set_b >= set_a) # Вивід: False
Використання методу issuperset()
set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
print(set_a.issuperset(set_b)) # Вивід: True
print(set_b.issuperset(set_a)) # Вивід: False
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ