Сравнение list comprehension и generator expression

Первая строка вывода — [0, 1, 2, 3, 4], вторая — представление объекта генератора, а не его элементы.

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

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

Первая строка вывода — [0, 1, 2, 3, 4], вторая — представление объекта генератора, а не его элементы.

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

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

Условие

Что будет напечатано после выполнения следующего кода:

print([i for i in range(5)])
print((i for i in range(5)))

Ответ

Первая строка вывода — [0, 1, 2, 3, 4], вторая — представление объекта генератора, а не его элементы.

[0, 1, 2, 3, 4]
<generator object <genexpr> at ...>

Адрес и точное представление генератора зависят от запуска. List comprehension сразу вычисляет значения и создаёт список. Generator expression создаёт ленивый объект, который выдаёт элементы по мере обхода.

Чтобы увидеть его значения, выполните print(list(i for i in range(5))). После полного обхода тот же генератор будет исчерпан. Для больших последовательностей генератор позволяет не хранить весь результат, если потребитель также обрабатывает элементы по одному.

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

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

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

Подробнее