Множества
Создание множеств
empty = set() # {}, но {} это словарь!
nums = {1, 2, 3, 2} # {1, 2, 3} (дубликаты удалены)
from_list = set([1, 2, 2, 3]) # {1, 2, 3}
from_str = set("hello") # {'h', 'e', 'l', 'o'}
# Генератор множества
squares = {x**2 for x in range(5)} # {0, 1, 4, 9, 16}
Операции с множествами
a = {1, 2, 3, 4} # инициализация множества
b = {3, 4, 5, 6} # инициализация множества
# Объединение
a | b # {1, 2, 3, 4, 5, 6}
a.union(b)
# Пересечение
a & b # {3, 4}
a.intersection(b)
# Разность
a - b # {1, 2} (что в a, но не в b)
a.difference(b)
b - a # {5, 6}
# Симметрическая разность
a ^ b # {1, 2, 5, 6}
a.symmetric_difference(b)
# Подмножество / надмножество
{1, 2}.issubset(a) # True
a.issuperset({1, 2}) # True
{1, 2}.isdisjoint({3}) # True (нет общих)
Методы множеств
s = {1, 2, 3} # инициализация множества
s.add(4) # {1, 2, 3, 4}
s.remove(4) # KeyError если нет
s.discard(4)
s.pop() # удаление и возврат последнего элемента
s.clear() # {}
# Неизменяемое множество
fs = frozenset([1, 2, 3]) # присваивание
Применение множеств
# Удаление дубликатов
list(set([1, 2, 2, 3, 3, 3])) # [1, 2, 3]
# Поиск общих элементов
common = set(list1) & set(list2) # преобразование в множество
# Поиск уникальных
unique = set(list1) - set(list2) # преобразование в множество
# Проверка уникальности
def has_duplicates(lst):
return len(lst) != len(set(lst)) # возврат значения