Дан генератор def gen(): yield 1; yield 2; yield 3. Выполнили g = gen(), first = next(g), rest = list(g). Чему равно rest?

A[1, 2, 3]
B[1, 2]
C[3]
D[2, 3]
Правильный ответ. Генератор хранит состояние: после next(g) он продолжит с места остановки.

Разбор

Вызов next(g) забирает первый yield (1) и переносит исполнение генератора дальше. Затем list(g) забирает оставшиеся значения, которые ещё не были выданы: 2 и 3. Поэтому rest равно [2, 3].

Проверь себя · 1/3разбор после ответа
Есть xs = [1, 2, 3] и it = iter(xs). Сначала выполняется a = list(it), а затем b = list(it). Чему равно b?
Тренировать Python в Telegram

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