Как получить одно значение за раз из функции генератора в Python? - PullRequest
87 голосов
/ 10 марта 2010

Очень простой вопрос - как получить одно значение из генератора в Python?

Пока я обнаружил, что могу получить один, написав gen.next(). Я просто хочу убедиться, что это правильный путь?

Ответы [ 5 ]

115 голосов
/ 10 марта 2010

Да или next(gen) в 2,6 +.

53 голосов
/ 11 марта 2010

В Python <= 2.5 используйте <code>gen.next(). Это будет работать для всех версий Python 2.x, но не для Python 3.x

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

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

9 голосов
/ 10 марта 2010

Это правильный способ сделать это.

Вы также можете использовать next(gen).

http://docs.python.org/library/functions.html#next

5 голосов
/ 17 сентября 2016

Использование (для Python 3)

next(generator)

Вот пример

def fun(x):
    n = 0
    while n < x:
        yield n
        n += 1
z = fun(10)
next(z)
next(z)

должен напечатать

0
1
2 голосов
/ 18 июня 2016

В Python 3 у вас нет gen.next (), но вы все равно можете использовать next (gen).Немного странно, если вы спросите меня, но это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...