Списковые выражения и генераторные выражения — это оба лаконичных способа создания последовательностей в Python, но они существенно отличаются по использованию памяти и стратегии вычисления.
Списковые выражения используют квадратные скобки и вычисляют все значения сразу, сохраняя их в памяти как полный список:
squares = [x**2 for x in range(1000000)] # Весь список хранится в памяти
Генераторные выражения используют круглые скобки и вычисляют значения лениво, то есть каждое значение вычисляется только по требованию:
squares = (x**2 for x in range(1000000)) # Никакой список в памяти не хранится
| Особенность | Списковое выражение | Генераторное выражение |
|---|---|---|
| Синтаксис | [x for x in ...] | (x for x in ...] |
| Вычисление | Нетерпеливое | Ленивое |
| Память | Хранит все значения | По одному значению за раз |
| Повторное использование | Да | Нет |
Генераторные выражения используют круглые скобки и реализуют ленивое вычисление, вычисляя значения только когда они явно запрашиваются во время итерации.
Новый — ещё не проверен сообществом
Вы