Есть xs = [1, 2, 3], it = iter(xs), затем it2 = iter(it). Какое утверждение верно?

Ait2 — это тот же iterator (или указывает на него), поэтому чтение из it2 продвигает it.
Bit2 — новый независимый iterator, который начнёт снова с 1.
Cit2 — копия списка xs.
Diter(it) превращает iterator в список.
Правильный ответ. Для итератора iter(it) возвращает его же, а не новый проход.

Разбор

Общее правило: iter(iterable) создаёт итератор, а iter(iterator) возвращает тот же объект итератора. Поэтому it и it2 разделяют состояние: вызов next(it2) забирает следующий элемент у it и наоборот. Это частый источник багов, если ожидали «второй независимый проход».

Проверь себя · 1/3разбор после ответа
Функция-генератор squares(n) делает yield i * i для i из range(n). Чему равно list(squares(3))?
Тренировать Python в Telegram

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