Представим себе программиста на Python. Имея на руках список пар значений, он всегда может получить множество уникальных пар, применив к списку функцию set()
.
Уже из этого множества легко получить словарь, применив функцию dict()
. Кажется, что с помощью генераторов списков мы можем описывать словари и множества так же декларативно, как и списки.
Однако в большинстве случаев это неоптимальное решение: в памяти будет создан и сохранен целиком весь промежуточный список. Особенно неприятно будет тратить лишнюю память, если при генерации элементов множества или словаря возникнет много повторяющихся значений или ключей.
Python и здесь приходит нам на помощь. Он предоставляет генераторы множеств и генераторы словарей, которые мы изучим в этом уроке.
Генераторы множеств
С этими генераторами все максимально просто. Нужно всего два действия:
- Взять выражение, описывающее генератор списка
- Заменить в нем квадратные скобки на фигурные
Посмотрим, как это работает:
squares = {x * x for x in range(10)}
squares
# {0, 1, 64, 4, 36, 9, 16, 49, 81, 25}