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
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ