tg-me.com/pyproglib/6898
Last Update:
👌 Что умеют множества (set) в Python
fruits = {"apples", "strawberries", "pears", "apples"}
print(fruits) # {'apples', 'pears', 'strawberries'}
Вместо словаря вида
colors = {"red": None, "green": None, "blue": None}
используйте множество:
colors = {"red", "green", "blue"}
Дубликаты исчезнут, а кода станет меньше.
numbers = [int(n) for n in open("numbers.txt")]
numbers_set = set(numbers) # создание множества
no_neighbors = [
n for n in numbers
if n-1 not in numbers_set and n+1 not in numbers_set
]
Преобразование списка в
set
резко ускорит поиск (O(1) вместо O(n)).a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
a | b # объединение → {1, 2, 3, 4, 5, 6}
a & b # пересечение → {3, 4}
a - b # только в a → {1, 2}
a ^ b # в одном, но не в двух → {1, 2, 5, 6}
Когда нужно узнать общие или уникальные элементы двух коллекций — множества решают задачу одной строкой.
Нужно сохранить порядок, но иногда делать быстрые проверки?
words = open("words.txt").read().split()
word_set = set(words)
anadromes = [w for w in words if w[::-1] in word_set]
Создаём
set
ради быстрых проверок, но сами данные храним в списке.nums = [1, 2, 3, 2]
has_dupes = len(nums) != len(set(nums)) # True
Одна строка — и вы знаете, есть ли повторения.
Когда выбирать set:
1. Убрать дубликаты, если порядок не важен.
2. Быстро проверить «есть ли элемент».
3. Сравнить коллекции с помощью
| & - ^
.4. Проверить уникальность элементов списка.
Библиотека питониста #буст