Какой объект является итератором и может быть напрямую использован в next(obj)?

AИтератор iter([1, 2])
BОбычный список [1, 2]
CОбычная строка 'ab'
DОбычное множество {1, 2}
Правильный ответ. next(obj) работает только с объектами-итераторами; обычные коллекции — это итерируемые, но не итераторы.

Разбор

iter([1, 2]) возвращает объект-итератор, у которого есть метод __next__, поэтому next(...) продвигает его и отдаёт следующий элемент. Список, строка и множество — это итерируемые объекты, к ним можно применить for, но прямой next([1, 2]) поднимет TypeError, потому что у них нет состояния «текущей позиции». Чтобы вызвать next от них, нужно сначала обернуть их в iter(...) и работать с возвращённым итератором.

Проверь себя · 1/3разбор после ответа
Что произойдёт при выполнении it = iter([]) и затем next(it)?
Тренировать Python в Telegram

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