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

В этом вопросе у меня есть бесконечная последовательность используя генераторы 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())
70 голосов | спросил Max 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 05 Sep 2012 08:45:21 +0400 2012, 08:45:21

2 ответа


0

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

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

ответил Greg Hewgill 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 05 Sep 2012 08:48:35 +0400 2012, 08:48:35
0

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

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

ответил cfi 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 05 Sep 2012 12:39:47 +0400 2012, 12:39:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132