139 votes

Comment obtenir une valeur à la fois à partir d'une fonction de générateur dans Python ?

Question très basique - comment obtenir une valeur d'un générateur en Python ?

Jusqu'à présent, j'ai trouvé que je peux en obtenir un en écrivant gen.next(). Je veux juste m'assurer que c'est la bonne façon ?

186voto

Ignacio Vazquez-Abrams Points 312628

Oui, ou next(gen) dans 2,6 +.

74voto

Christian Oudard Points 13461

En Python <= 2,5, utilisez gen.next(). Cela fonctionnera pour toutes les versions de Python 2.x, mais pas pour Python 3.x

En Python >= 2,6, utilisez next(gen). Il s'agit d'une fonction intégrée, et elle est plus claire. Il fonctionnera également en Python 3.

Ces deux fonctions finissent par appeler une fonction spécialement nommée, next(), qui peut être remplacée par une sous-classe. Dans Python 3, cependant, cette fonction a été renommée __next__(), pour être cohérente avec d'autres fonctions spéciales.

20voto

dshri Points 457

Utilisation (pour python 3)

next(generator)

Voici un exemple :

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

doit imprimer

0
1

10voto

recursive Points 34729

C'est la bonne façon de le faire.

Vous pouvez également utiliser next(gen).

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

4voto

Ryukendo Dey Points 63

Pour obtenir la valeur associée à un objet générateur dans python 3 et supérieur, utilisez next(<your generator object>). Les appels ultérieurs à next() produisent des valeurs d'objet successives dans la file d'attente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X