По порядку Middle Итераторы и генераторы обновлено
Что делает цикл for по шагам
Вопрос
Расставьте шаги выполнения for x in obj: body по порядку.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1Присвоить полученное значение переменной
x - 2Поймать
StopIterationи выйти из цикла - 3Вызвать
iter(obj)и получить итератор - 4Выполнить тело цикла и снова вызвать
next() - 5Вызвать
next()у итератора
Показать ответ и разбор
Коротко
Итератор создаётся один раз в начале, затем next() повторяется, пока не будет StopIteration. Исключение цикл поглощает сам, и после него выполняется ветка else у for, если она есть.
Правильный порядок
- 1Вызвать
iter(obj)и получить итератор - 2Вызвать
next()у итератора - 3Присвоить полученное значение переменной
x - 4Выполнить тело цикла и снова вызвать
next() - 5Поймать
StopIterationи выйти из цикла
Разбор
Итератор создаётся один раз в начале, затем next() повторяется, пока не будет StopIteration. Исключение цикл поглощает сам, и после него выполняется ветка else у for, если она есть.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Функции itertools и их результат
Следующий вопрос
Ленивое условие в генераторном выражении
Термины по теме
Ещё по теме «Итераторы и генераторы»
- Когда выполняется тело генератора
- Разбить последовательность на пачки
- Рекурсивно развернуть вложенные списки
- Конвейер обработки лога на генераторах
- Свой итерируемый класс, который можно обходить много раз
- Когда выполняется finally в недочитанном генераторе
- Полезные функции itertools
- Ленивые вычисления