logo

Generadores en Python

Un generador en Python es una función que devuelve un iterador utilizando la palabra clave Yield. En este artículo, discutiremos cómo funciona la función generadora en Python.

Función generadora en Python

Una función generadora en Python se define como una función normal, pero siempre que necesita generar un valor, lo hace con el palabra clave de rendimiento en lugar de regresar. Si el cuerpo de una def contiene rendimiento, la función se convierte automáticamente en una función generadora de Python.



Crear un generador en Python

En Python, podemos crear una función generadora simplemente usando la palabra clave def y la palabra clave rendimiento. El generador tiene la siguiente sintaxis en Pitón :

def function_name():  yield statement>

Ejemplo:

En este ejemplo, crearemos un generador simple que producirá tres números enteros. Luego imprimiremos estos números enteros usando Python. en bucle .



Python3






rajesh khanna

# A generator function that yields 1 for first time,> # 2 second time and 3 third time> def> simpleGeneratorFun():> >yield> 1> >yield> 2> >yield> 3> > # Driver code to check above generator function> for> value>in> simpleGeneratorFun():> >print>(value)>

>

>

Producción:

1 2 3>

Objeto generador

Las funciones del generador de Python devuelven un objeto generador que es iterable, es decir, que se puede utilizar como Iterador . Los objetos generadores se utilizan llamando al siguiente método del objeto generador o utilizando el objeto generador en un bucle for in.

Ejemplo:

En este ejemplo, crearemos una función generadora simple en Python para generar objetos usando el función siguiente () .

Python3


cadena concat de java



# A Python program to demonstrate use of> # generator object with next()> > # A generator function> def> simpleGeneratorFun():> >yield> 1> >yield> 2> >yield> 3> > # x is a generator object> x>=> simpleGeneratorFun()> > # Iterating over the generator object using next> > # In Python 3, __next__()> print>(>next>(x))> print>(>next>(x))> print>(>next>(x))>

>

>

Producción:

1 2 3>

Ejemplo:

En este ejemplo, crearemos dos generadores para números de Fibonacci, primero un generador simple y el segundo generador usando un en bucle .

Python3




# A simple generator for Fibonacci Numbers> def> fib(limit):> > ># Initialize first two Fibonacci Numbers> >a, b>=> 0>,>1> > ># One by one yield next Fibonacci Number> >while> a yield a a, b = b, a + b # Create a generator object x = fib(5) # Iterating over the generator object using next # In Python 3, __next__() print(next(x)) print(next(x)) print(next(x)) print(next(x)) print(next(x)) # Iterating over the generator object using for # in loop. print(' Using for in loop') for i in fib(5): print(i)>

Katrina Kaif
>

>

Producción:

0 1 1 2 3  Using for in loop 0 1 1 2 3>

Expresión del generador de Python

En Python, la expresión del generador es otra forma de escribir la función del generador. Utiliza Python comprensión de la lista técnica pero en lugar de almacenar los elementos en una lista en la memoria, crea objetos generadores.

Sintaxis de expresión del generador

La expresión generadora en Python tiene la siguiente sintaxis:

(expression for item in iterable)>

Ejemplo:

Oracle SQL no es igual

En este ejemplo, crearemos un objeto generador que imprimirá los múltiplos de 5 entre el rango de 0 a 5 que también son divisibles por 2.

Python3




# generator expression> generator_exp>=> (i>*> 5> for> i>in> range>(>5>)>if> i>%>2>=>=>0>)> > for> i>in> generator_exp:> >print>(i)>

>

>

Producción:

0 10 20>

Aplicaciones de generadores en Python

Supongamos que creamos una secuencia de números de Fibonacci, adoptar el enfoque del generador lo hace trivial; sólo tenemos que llamar a next(x) para obtener el siguiente número de Fibonacci sin preocuparnos de dónde o cuándo termina el flujo de números. Un tipo más práctico de procesamiento de flujo es el manejo de archivos de datos grandes, como archivos de registro. Los generadores proporcionan un método que ahorra espacio para dicho procesamiento de datos, ya que solo se manejan partes del archivo en un momento dado. También podemos usar iteradores para estos propósitos, pero Generator proporciona una manera rápida (no necesitamos escribir los métodos __next__ y __iter__ aquí).