JavaRush/Курси/Модуль 1: Python Core/Отримання підмножини

Отримання підмножини

Відкрита

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
2
Задача
Модуль 1: Python Core,  6 рівень,  3 лекція
Недоступна
Чіткий але випадковий
Чіткий але випадковий
2
Задача
Модуль 1: Python Core,  6 рівень,  3 лекція
Недоступна
Генератор квадратів
Генератор квадратів
Коментарі (2)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
negoda @poviranacze - Telegram в Python Intern (Train
18 липня 2025, 19:47
Решение второй задачи (List Comprehension)
my_set = {x**2 for x in range(1,11)}
print(my_set)
negoda @poviranacze - Telegram в Python Intern (Train
18 липня 2025, 19:44
Решение первой задачи (List Comprehension)
import random

my_set = {random.randint(1, 100) for x in range(10)}
sub_set = {x for x in my_set if x % 2 == 0}

print(sub_set)