Что выведет код: `g = (x*2 for x in [1,2,3]); print(list(g)); print(list(g))`?
Pythonmediummiddle
Варианты ответа
[2, 4, 6] [] — generator одноразовый, после первого list(g) он exhausted, повторное обращение возвращает пустой list. Нужно пересоздать generator если требуется повторная итерация по данным
[2, 4, 6] [2, 4, 6] — generator кэширует значения после первого прохода, повторный list(g) возвращает кэш. Python автоматически материализует generator в tuple для переиспользования
StopIteration на втором list(g) — Python выбрасывает исключение когда iterator истощён. Нужно обернуть в try/except или использовать islice() с reset параметром для restart
[2, 4, 6] [2, 4, 6] — generator expression создаёт переиспользуемый объект как list comprehension, оба list(g) дают одинаковый результат, ленивость только при первом обращении
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
2475 вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.