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

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

Модуль 1: Python Core
Рівень 6 , Лекція 3
Відкрита

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)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
negoda Рівень 31
18 липня 2025
Решение второй задачи (List Comprehension)

my_set = {x**2 for x in range(1,11)}
print(my_set)
negoda Рівень 31
18 липня 2025
Решение первой задачи (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)