iteradores - python generadores
¿Cómo obtener un valor de un generador en Python? (5)
En Python <= 2.5, use gen.next()
. Esto funcionará para todas las versiones de Python 2.x, pero no Python 3.x
En Python> = 2.6, use next(gen)
. Esta es una función incorporada, y es más clara. También funcionará en Python 3.
Ambas terminan llamando a una función especialmente nombrada, next()
, que puede anularse mediante subclases. En Python 3, sin embargo, esta función ha sido renombrada a __next__()
, para ser consistente con otras funciones especiales.
Pregunta muy básica: ¿cómo obtener un valor de un generador en Python?
Hasta ahora he encontrado que puedo obtener uno escribiendo gen.next()
. Solo quiero asegurarme de que este sea el camino correcto.
En python 3 no tiene gen.next (), pero puede usar next (gen). Un poco extraño si me preguntas, pero así es como es.
Esta es la forma correcta de hacerlo.
También puede usar next(gen)
.
Sí, o el next(gen)
en 2.6+.
Uso (para python 3)
next(generator)
Aquí hay un ejemplo
def fun(x):
n = 0
while n < x:
yield n
n += 1
z = fun(10)
next(z)
next(z)
debería imprimir
0
1