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

A[]
B[1, 2, 3]
CБудет выброшено исключение TypeError.
DБудет выброшено исключение StopIteration.
Правильный ответ. Итератор одноразовый: после полного прохода он исчерпан, повторная материализация даст пустой результат.

Разбор

Вызов list(it) последовательно берёт элементы через next(it) до конца. Когда элементы заканчиваются, внутри используется StopIteration, но наружу исключение не пробрасывается. Итератор остаётся в состоянии «конец», поэтому второй list(it) возвращает пустой список.

Проверь себя · 1/3разбор после ответа
Создали g = (x for x in [1, 2, 3]), затем s1 = sum(g) и s2 = sum(g). Чему равно s2?
Тренировать Python в Telegram

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