Ленивые вычисления и генераторные выражения
Python
Senior
Яндекс
Объясните разницу между списковым включением (`[x*x for x in it]`) и генераторным выражением (`(x*x for x in it)`). В каких случаях второе предпочтительнее?
Ответы
List comprehension vs generator expression
List comprehension сразу создаёт список всех элементов в памяти. Генераторное выражение возвращает генератор, который выдаёт элементы по одному — лениво.
Генераторное выражение предпочтительно, когда:
- итерируемся один раз;
- данные большие;
- нам подходит потоковая обработка, например:
```python
total = sum(x*x for x in range(10_000_000))
```