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
            
        
undefined
2
Задача
Модуль 1: Python Core, 6 уровень, 3 лекция
Недоступна
Четкий но случайный
Четкий но случайный
undefined
2
Задача
Модуль 1: Python Core, 6 уровень, 3 лекция
Недоступна
Генератор квадратов
Генератор квадратов