Подтвердить что ты не робот

Нет функции next() в генераторе выходных данных в python 3

В этот вопрос, у меня есть бесконечная последовательность, использующая генераторы Python. Но тот же код не работает в Python 3, потому что, похоже, нет функции next(). Что эквивалентно функции next?

def updown(n):
    while True:
        for i in range(n):
            yield i
        for i in range(n - 2, 0, -1):
            yield i

uptofive = updown(6)
for i in range(20):
    print(uptofive.next())
4b9b3361

Ответ 1

В Python 3 используйте next(uptofive) вместо uptofive.next().

Встроенная функция next() также работает в Python 2.6 или выше.

Ответ 2

В Python 3, чтобы сделать синтаксис более последовательным, метод next() был переименован в __next__(). Вы можете использовать этот. Это объясняется в PEP 3114.

Следующее решение Greg и вызов функции builtin next() (которая затем пытается найти метод объекта __next__()) рекомендуется.