Создали g = (x for x in [1, 2, 3]), затем s1 = sum(g) и s2 = sum(g). Чему равно s2?

A6
B3
C0
DБудет ошибка TypeError.
Правильный ответ. Generator expression исчерпывается после первого прохода; второй раз sum увидит пустой поток.

Разбор

При первом sum(g) генератор отдаёт 1, 2, 3 и исчерпывается. Второй sum(g) суммирует уже пустой iterator, а сумма пустой последовательности в Python — 0. Это типичный баг в аналитике: один и тот же генератор используют для нескольких метрик.

Проверь себя · 1/3разбор после ответа
Функция-генератор def evens(xs): for x in xs: if x % 2 == 0: yield x. Чему равен результат list(evens([1, 2, 3, 4]))?
Тренировать Python в Telegram

Ещё вопросы по теме «Итераторы и генераторы»