Множества (Set) и их методы: объединение, пересечение и др.
Что такое множества в Python? 🧩
Множество (set) — это неупорядоченная коллекция уникальных элементов. Оно идеально подходит для операций с уникальными данными, например, удаления дубликатов или быстрой проверки вхождения элемента.
# Создание множества
fruits = {"apple", "banana", "cherry", "apple"} # Дубликаты удаляются автоматически!
print(fruits) # {'banana', 'cherry', 'apple'}
🔹 Особенности множеств: - Не хранят порядок элементов (в отличие от списков). - Нельзя изменять элементы после добавления (как и ключи словаря). - Поддерживают математические операции: объединение, пересечение и др.
Основные методы множеств ⚙️
1. Добавление и удаление элементов
numbers = {1, 2, 3}
# Добавление элемента
numbers.add(4) # {1, 2, 3, 4}
# Удаление элемента (вызывает ошибку, если элемента нет)
numbers.remove(2) # {1, 3, 4}
# Безопасное удаление (не вызывает ошибку)
numbers.discard(99) # Ничего не произойдет
2. Объединение множеств: union() или | 🔗
Объединяет два множества, возвращая новое множество без дубликатов.
set_a = {1, 2, 3}
set_b = {3, 4, 5}
# Способ 1: метод union()
result = set_a.union(set_b) # {1, 2, 3, 4, 5}
# Способ 2: оператор |
result = set_a | set_b # То же самое, но короче!
3. Пересечение множеств: intersection() или & 🔀
Возвращает элементы, которые есть в обоих множествах.
set_a = {1, 2, 3}
set_b = {2, 3, 4}
# Способ 1: метод intersection()
result = set_a.intersection(set_b) # {2, 3}
# Способ 2: оператор &
result = set_a & set_b # Аналогично
4. Разность множеств: difference() или - ➖
Возвращает элементы, которые есть в первом множестве, но отсутствуют во втором.
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5}
# Способ 1: метод difference()
result = set_a.difference(set_b) # {1, 2}
# Способ 2: оператор -
result = set_a - set_b # То же самое
5. Симметричная разность: symmetric_difference() или ^ 🔄
Возвращает элементы, которые есть только в одном из множеств.
set_a = {1, 2, 3}
set_b = {3, 4, 5}
# Способ 1: метод symmetric_difference()
result = set_a.symmetric_difference(set_b) # {1, 2, 4, 5}
# Способ 2: оператор ^
result = set_a ^ set_b # Короче и элегантнее!
Практический пример: работа с пользователями 👥
Допустим, у нас есть два списка пользователей: подписчики блога (blog_followers) и подписчики YouTube (youtube_followers). Найдем:
- Уникальных подписчиков на обоих платформах.
- Пользователей, подписанных только на блог.
- Общих подписчиков.
blog_followers = {"alice", "bob", "charlie", "diana"}
youtube_followers = {"bob", "diana", "eve", "frank"}
# Объединение (все уникальные подписчики)
all_followers = blog_followers | youtube_followers
print(all_followers) # {'alice', 'bob', 'charlie', 'diana', 'eve', 'frank'}
# Подписчики только блога
only_blog = blog_followers - youtube_followers
print(only_blog) # {'alice', 'charlie'}
# Общие подписчики
common = blog_followers & youtube_followers
print(common) # {'bob', 'diana'}
Выводы и применение 🛠️
Множества в Python — это мощный инструмент для:
- Удаления дубликатов из списков:
list(set(my_list)). - Быстрой проверки вхождения элемента (
if item in my_setработает быстрее, чем в списках!). - Решения задач на пересечения, объединения и разности данных.
Для глубокого погружения в Python рекомендую канал Данилы Бежина — там разбирают сложные темы простым языком! 🚀