Множества в Python представляют собой неупорядоченные коллекции уникальных (то есть неповторяющихся) элементов. Они полезны для выполнения множества операций, таких как объединение, пересечение, разность и симметричная разность. Рассмотрим подробно создание, использование и различные операции с множествами.
Создание множеств
Пустое множество
Для создания пустого множества используйте функцию
set()
, так как {}
создаст пустой словарь.empty_set = set()
Множество с элементами
fruits = {"apple", "banana", "cherry"}
Преобразование списка в множество
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = set(numbers)
print(unique_numbers) # {1, 2, 3, 4, 5}
Основные операции с множествами
Добавление элементов
Метод add()
Добавляет один элемент в множество.
fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits) # {"apple", "banana", "cherry"}
Метод update()
Добавляет несколько элементов в множество.
fruits = {"apple", "banana"}
fruits.update(["cherry", "date"])
print(fruits) # {"apple", "banana", "cherry", "date"}
Удаление элементов
Метод remove()
fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits) # {"apple", "cherry"}
Метод discard()
Удаляет элемент из множества, если он существует. Если элемент не найден, не вызывает ошибок.
fruits = {"apple", "banana", "cherry"}
fruits.discard("banana")
print(fruits) # {"apple", "cherry"}
Метод pop()
Удаляет и возвращает случайный элемент из множества. Если множество пусто, вызывает
KeyError
.fruits = {"apple", "banana", "cherry"}
removed_fruit = fruits.pop()
print(removed_fruit)
print(fruits)
Метод clear()
Удаляет все элементы из множества.
fruits = {"apple", "banana", "cherry"}
fruits.clear()
print(fruits) # set()
Операции с множествами
Объединение множеств
Оператор
|
и метод union()
a = {1, 2, 3}
b = {3, 4, 5}
union_set = a | b
print(union_set) # {1, 2, 3, 4, 5}
union_set = a.union(b)
print(union_set) # {1, 2, 3, 4, 5}
Пересечение множеств
Оператор
&
и метод intersection()
a = {1, 2, 3}
b = {3, 4, 5}
intersection_set = a & b
print(intersection_set) # {3}
intersection_set = a.intersection(b)
print(intersection_set) # {3}
Разность множеств
Оператор
-
и метод difference()
a = {1, 2, 3}
b = {3, 4, 5}
difference_set = a - b
print(difference_set) # {1, 2}
difference_set = a.difference(b)
print(difference_set) # {1, 2}
Симметричная разность множеств
Оператор
^
и метод symmetric_difference()
a = {1, 2, 3}
b = {3, 4, 5}
symmetric_difference_set = a ^ b
print(symmetric_difference_set) # {1, 2, 4, 5}
symmetric_difference_set = a.symmetric_difference(b)
print(symmetric_difference_set) # {1, 2, 4, 5}
Проверка подмножеств и надмножеств
Метод
issubset()
Проверяет, является ли одно множество подмножеством другого.
a = {1, 2, 3}
b = {1, 2, 3, 4, 5}
is_subset = a.issubset(b)
print(is_subset) # True
Метод
issuperset()
Проверяет, является ли одно множество надмножеством другого.
a = {1, 2, 3, 4, 5}
b = {1, 2, 3}
is_superset = a.issuperset(b)
print(is_superset) # True
Метод
isdisjoint()
Проверяет, не имеют ли множества общих элементов.
a = {1, 2, 3}
b = {4, 5, 6}
is_disjoint = a.isdisjoint(b)
print(is_disjoint) # True
Перебор элементов множества
fruits = {"apple", "banana", "cherry"}
for fruit in fruits:
print(fruit)
Генераторы множеств
Генераторы множеств позволяют создавать множества с помощью краткой записи.
squares = {x ** 2 for x in range(10)}
print(squares) # {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
Работа с множествами и другими типами данных
Множества и списки
Преобразование множества в список и обратно.
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers) # [1, 2, 3, 4, 5]
Множества и строки
Создание множества уникальных символов строки.
string = "hello world"
unique_chars = set(string)
print(unique_chars) # {'d', 'e', 'h', 'l', 'o', 'r', 'w'}
Множества и кортежи
Множества могут содержать кортежи, так как они неизменяемы и хэшируемы.
coordinates = {(1, 2), (3, 4), (5, 6)}
print(coordinates)
Множества и словари
Ключи словаря могут быть преобразованы в множество.
my_dict = {"a": 1, "b": 2, "c": 3}
keys_set = set(my_dict.keys())
print(keys_set) # {'a', 'b', 'c'}
Полезные приемы и трюки с множествами
Нахождение дубликатов в списке
numbers = [1, 2, 2, 3, 4, 4, 5]
duplicates = set(x for x in numbers if numbers.count(x) > 1)
print(duplicates) # {2, 4}
Удаление элементов, присутствующих в другом списке
list1 = [1, 2, 3, 4, 5]
list2 = [2, 4, 6]
result = list(set(list1) - set(list2))
print(result) # [1, 3, 5]