List comprehension и генератор: память и повторный обход

[x for x in y] сразу создаёт список, а (x for x in y) создаёт генератор, выдающий элементы по запросу. Список хранит все результаты и допускает повторный обход; генератор обычно исчерпывается после одного прохода.

Короткий ответ

Что ответить на собеседовании

[x for x in y] сразу создаёт список, а (x for x in y) создаёт генератор, выдающий элементы по запросу. Список хранит все результаты и допускает повторный обход; генератор обычно исчерпывается после одного прохода.

Подробный разбор

Ответ с пояснениями

[x for x in y] сразу создаёт список, а (x for x in y) создаёт генератор, выдающий элементы по запросу. Список хранит все результаты и допускает повторный обход; генератор обычно исчерпывается после одного прохода.

Генератор полезен для больших потоков и короткого замыкания потребителя: неиспользованные элементы вычисляться не будут. Однако он удерживает ссылки на необходимые объекты и не делает источник автоматически компактным. У списка есть индексирование и длина; для генератора таких возможностей без потребления нет. Ошибка в теле выражения у генератора может проявиться позднее, во время итерации.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее