Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Множества (Set) в Python
Множество (set) — это неупорядоченная коллекция уникальных элементов. Это математическое множество, реализованное в Python.
Основные характеристики
# Создание множества
my_set = {1, 2, 3, 4, 5}
empty_set = set() # Не {}! {} — это пустой dict
# Множество содержит только уникальные элементы
duplicates = {1, 1, 2, 2, 3} # {1, 2, 3}
# Элементы неупорядочены
print({3, 1, 2}) # Порядок может отличаться
# Множество изменяемо, но элементы должны быть неизменяемы
my_set.add(6)
my_set.remove(1)
# my_set.add([1, 2]) # TypeError: unhashable type
Операции с множествами
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# Объединение (union)
print(a | b) # {1, 2, 3, 4, 5, 6}
print(a.union(b))
# Пересечение (intersection)
print(a & b) # {3, 4}
print(a.intersection(b))
# Разность (difference)
print(a - b) # {1, 2}
print(a.difference(b))
# Симметричная разность (symmetric difference)
print(a ^ b) # {1, 2, 5, 6}
print(a.symmetric_difference(b))
# Проверка подмножества
print({1, 2}.issubset(a)) # True
print(a.issubset({1, 2, 3, 4, 5}) # True
# Проверка надмножества
print(a.issuperset({1, 2})) # True
Методы множеств
my_set = {1, 2, 3}
# Добавление элемента
my_set.add(4) # {1, 2, 3, 4}
# Удаление элемента
my_set.remove(1) # KeyError если элемента нет
my_set.discard(1) # Безопасное удаление
# Удаление и возврат случайного элемента
elem = my_set.pop()
# Очистка множества
my_set.clear() # set()
# Копирование
copy_set = my_set.copy()
Практические применения
1. Удаление дубликатов
numbers = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(numbers)) # [1, 2, 3, 4]
2. Быстрая проверка принадлежности
# Список — O(n)
allowed_list = [1, 2, 3, 4, 5]
if 3 in allowed_list: # Медленно
pass
# Множество — O(1)
allowed_set = {1, 2, 3, 4, 5}
if 3 in allowed_set: # Быстро!
pass
3. Пересечение списков
users_a = [1, 2, 3, 4]
users_b = [3, 4, 5, 6]
common = list(set(users_a) & set(users_b)) # [3, 4]
4. Поиск уникальных элементов
text = "hello world"
unique_chars = set(text) # {'h', 'e', 'l', 'o', ' ', 'w', 'r', 'd'}
print(len(unique_chars))
Frozenset — неизменяемое множество
# Обычное множество — изменяемо
mutable_set = {1, 2, 3}
mutable_set.add(4) # OK
# Frozenset — неизменяемо
frozen = frozenset({1, 2, 3})
# frozen.add(4) # AttributeError
# Можно использовать как ключ dict
dict_with_set_keys = {frozenset([1, 2]): "value"}
Производительность
import timeit
# Set очень быстр для проверки принадлежности
print(timeit.timeit("3 in {1, 2, 3, 4, 5}", number=1000000))
print(timeit.timeit("3 in [1, 2, 3, 4, 5]", number=1000000))
Итог
Используй множества для:
- Удаления дубликатов
- Быстрой проверки принадлежности
- Математических операций (объединение, пересечение)
- Когда порядок элементов не важен