Какое объяснение лучше всего описывает разницу между iterable и iterator в контексте повторных проходов?

AIterable может возвращать новый iterator при каждом iter(obj), поэтому по нему обычно можно проходить несколько раз; iterator хранит состояние и исчерпывается.
BIterable всегда одноразовый, а iterator можно перебирать бесконечно.
CIterator нельзя использовать в for, а iterable можно.
DРазницы нет: любой объект можно итерировать сколько угодно раз.
Правильный ответ. Iterable — это источник итераторов, iterator — это «курсор» по данным.

Разбор

Список, строка, словарь — обычно iterable: iter(obj) создаёт новый iterator, поэтому вы можете сделать два независимых for-прохода. iterator (например, результат iter(list) или generator) сам хранит позицию и после исчерпания не «перематывается». Если нужен повторный проход, создавайте новый iterator или материализуйте данные.

Проверь себя · 1/3разбор после ответа
Есть функция def f(x): print(x); return x. Создали g = (f(x) for x in [1, 2, 3]). Сразу после создания g сколько раз выполнится print(x)?
Тренировать Python в Telegram

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