Множества (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). Найдем:

  1. Уникальных подписчиков на обоих платформах.
  2. Пользователей, подписанных только на блог.
  3. Общих подписчиков.
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 рекомендую канал Данилы Бежина — там разбирают сложные темы простым языком! 🚀

Скрыть рекламу навсегда

🌱 Индвидидулаьные занятия

Индивидуальные онлайн-занятия по программированию для детей и подростков

Личный подход, без воды, с фокусом на понимание и реальные проекты.

🚀 Записаться на занятие