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
Задача
Модуль 1: Python Core, 6 уровень, 3 лекция
Недоступна
Четкий но случайный
Четкий но случайный
2
Задача
Модуль 1: Python Core, 6 уровень, 3 лекция
Недоступна
Генератор квадратов
Генератор квадратов
Комментарии (22)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Kosta Уровень 13
29 августа 2026
Плагин hitech-plugin-251.1.99 закрывает текущий level и задачи в нём не отображаются. Кнопка "Обновить задачи" возвращает задачи в список.
Stanislav Уровень 10
24 августа 2026

my_set = {x**2 for x in range(1,11)}
print(my_set)
Andrew Уровень 26
18 июля 2026
import random my_set = set(random.sample(range(1, 101), 10)) even_set = {x for x in my_set if x % 2 == 0} print(even_set)
Алексей Тумель Уровень 21
9 мая 2026
# Четкий но случайный ЗАПЯТАЯ !!!
PaPaY Уровень 13
19 марта 2026

user_set = {1,2,3,4,5,6,7,8,9,10}
user_set_squares = {i**2 for i in range(1,11)}

print(user_set_squares)
PaPaY Уровень 13
19 марта 2026

from random import randint

random_set = set()  # створюємо порожнє множення

while len(random_set) < 10:
    random_set.add(randint(1, 100))

even_set = {x for x in random_set if x % 2 == 0}
print(even_set)
Людмила Уровень 11
17 марта 2026
my_set = set() k = 0 while k < 10: element = randint(1,100) if element not in my_set: my_set.add(element) k += 1 #print(len(my_set)) my_set_2 = set(filter(lambda x: x % 2 == 0, my_set)) #print(my_set) print(my_set_2)
EvgenyXIV Уровень 31
16 марта 2026
Уважаемые спорщики, я бы поспорил с вами) Пример random_numbers = {random.randint(1, 100) for _ in range(10)} в задании 1 вполне корректный. В задании 1 не оговаривается размер самого множества, а только то, что оно создаётся из 10 чисел!! А уж какие числа - такое и множество. Так что, не обязательно выкручиваться, хотя это и полезно)) Так "правильнее" по заданию: import random def _even(n): return n % 2 == 0 my_set = {random.randrange(1, 101) for _ in range(10)} print(set(filter(_even, my_set)))
Анатолий Уровень 63
26 января 2026
❤️
Slevin Уровень 59
25 июня 2025
В первой задаче пример решения - неправильный:

random_numbers = {random.randint(1, 100) for _ in range(10)}
Эта строка будет НЕ ВСЕГДА создавать сет на 10 элементов
Vanil'ka Уровень 25
29 июля 2025
Ну да. Иногда генератор создает дубликаты чисел, а set подразумевает только уникальные элементы. Отсюда размер множества меньше 10-ти. Чтобы этого избежать можно использовать функцию sample из модуля random: set(sample(range(1, 101), 10)) sample выбирает случайные уникальные значения из заданной последовательности.
Maksym Уровень 22
15 октября 2025
Вы если все же решили помочь пишите корректно у вас ошибка в коде: set(sample(range(1,101),10))👎 Правильно: set(random.sample(1,101),10))👍
Daria Уровень 11
20 февраля 2026
вот так работает,у вас уобоих ошибка import random my_set = set(random.sample(range(1, 101), 10))
EvgenyXIV Уровень 31
16 марта 2026
"... вот так работает,у вас у обоих ошибка import random my_set = set(random.sample(range(1, 101), 10))..." это может и не ошибка, смотря, что было выше в коде... может быть и так from random import sample my_set = set(sample(range(1, 101), 10))
EvgenyXIV Уровень 31
16 марта 2026
и пример в задаче правильный)