generador de python

Los iteradores juegan un papel importante en Python. Le permiten crear un objeto sobre el que se puede iterar. Es una buena forma de almacenar datos a los que se puede acceder a través de un bucle for in.

El problema con los iteradores es que se necesita mucho trabajo para construir uno. Son √∫tiles, pero tienes que escribir mucho còdigo para que uno funcione. Los generadores ayudan a resolver este problema.

En esta guìa, vamos a hablar sobre qué son los generadores de Python y por qué deberìa usarlos. También implementaremos un generador en Python para ayudarlo a comprender còmo funcionan.

Sin más preámbulos, ¬°comencemos!

¿Qué es un generador? < / h2>

Un generador es una forma sencilla de crear un iterador en Python. Es una funciòn que devuelve un objeto sobre el que puede iterar.

Los generadores a menudo se denominan az√∫car sintáctico. Esto se debe a que no necesariamente agregan nueva funcionalidad a Python. Ayudan a que su còdigo sea más eficiente.

Al igual que los iteradores, solo puede iterar sobre un generador una vez. Esto se debe a que los generadores realizan un seguimiento de cuántas veces se han iterado y no se pueden restablecer.

Echemos un vistazo a un iterador de Python:

81% de los participantes afirmaron que se sentìan más seguros de sus perspectivas laborales tecnològicas después de asistir a un campamento de entrenamiento. Asigne a un bootcamp hoy.

El graduado promedio de bootcamp pasò menos de seis meses en la transiciòn de carrera, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Este còdigo crea un iterador llamado Galletas. Cuando pase datos a través de este iterador, se convertirá en un objeto iterable. Esto significa que puede recorrer los datos usando un bucle for in. Si está mirando este còdigo y cree que es muy largo, es porque lo es.

Los generadores pueden ayudarnos a acortar este còdigo. Escribamos un generador para nuestro iterador anterior:

Nuestro còdigo se ha reducido drásticamente en tama√±o. Analicemos còmo funciona esto.

Un generador es una funciòn que tiene una palabra clave de rendimiento en lugar de una declaraciòn de retorno. Las declaraciones de rendimiento devuelven un valor de una funciòn.

La diferencia entre una declaraciòn de rendimiento y una declaraciòn de retorno es que una declaraciòn de retorno detiene la ejecuciòn de una funciòn, mientras que una declaraciòn de rendimiento detiene la funciòn y contin√∫a iterando.

Intentemos iterar sobre nuestra funciòn generadora simple:

Nuestro còdigo devuelve:

Frambuesa

Raspberry

& hellip;

Este còdigo se repite hasta que detengamos nuestro programa. Esto se debe a que hemos usado un bucle while que ejecuta para siempre. Esto no es muy √∫til en la mayorìa de los casos. Escribamos un generador que se detenga cuando se haya realizado una acciòn.

Còmo escribir un generador de Python

Tenemos un lista de cookies que queremos imprimir en la consola. Esta lista se ve asì:

[" Raspberry & rdquo ;, " Choc-Chip & rdquo ;, " Cinnamon & rdquo ;, & ldquo ; Avena "]

Para imprimirlos en la consola, podrìamos crear comiò un generador simple. Abra un nuevo archivo Python y pegue el siguiente còdigo:

Nuestro generador revisa cada cookie en la lista que especificamos y devuelve cada cookie individualmente. Este generador a√∫n no funciona. Tenemos que usar un bucle for para iterar sobre él:

Hemos definido una matriz llamada cookie_list que almacena una lista de cuatro cookies. Luego hemos configurado un bucle for que usa nuestro generador para iterar a través de los valores en cookie_list .

Para cada iteraciòn en nuestro bucle for, el objeto generado se imprime a la consola:

Frambuesa

"Career Karma entrò en mi vida cuando más lo necesitaba y rápidamente me ayudò a combinar con un bootcamp. Dos meses después de graduarme, encontré mi trabajo de ensue√±o que se alinea con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

Choc-Chip

Canela

Avena

¬°Lo logramos! Este generador devuelve valores hasta que se repite cada valor de la variable cookie_list .

Los generadores tienen una variedad de casos de uso. Digamos que tenemos una lista de precios de pedidos que queremos sumar. Podrìamos hacer esto usando el siguiente còdigo:

Este generador mantendrá un total acumulado del valor de todos los pedidos en un lista. Después de que se haya repetido cada artìculo, el generador arrojará el valor total actual de los pedidos. Vamos a escribir un bucle for que utilice nuestro generador:

Nuestro còdigo devuelve:

2.3

4.8

6.75

12.75

20.25

22.4

Nuestro generador ha calculado el valor acumulativo de todos los pedidos en la variable order_list. Cada iteraciòn sobre la lista devuelve el nuevo valor acumulativo.

Còmo Escribir una expresiòn de generador

Los generadores ya son más fáciles de escribir que un iterador. Nuestra b√∫squeda de escribir un còdigo más limpio no necesita detenerse, gracias a las expresiones de generador.

Expresiones de generador son similares a listas por comprensiòn . Las expresiones generadoras producen un elemento a la vez, como un generador. Esto es diferente de una lista comprensiva que produce una lista completa, todo a la vez.

Vamos a escribir un generador para nuestro ejemplo de cookies:

Nosotros " ve definiò una lista de cookies en la variable cookie_list . Luego creamos una expresiòn generadora. Esta expresiòn utiliza la sintaxis para las listas por comprensiòn, pero con una gran diferencia: las listas por comprensiòn se definen entre corchetes, mientras que los generadores se definen entre corchetes redondeados.

Creemos un bucle for que repita la expresiòn:

Nuestro còdigo devuelve:

Frambuesa

Choc-Chip

Canela

Avena

La respuesta de este generador es la misma que la de nuestro primer ejemplo. Nuestra sintaxis es significativamente más clara.

Es importante notar que cuando iteras sobre un generador que fue declarado usando una expresiòn de generador, no lo llamas como una funciòn. Nuestro generador de cookie_generator no acepta ning√∫n valor de entrada: ya contiene el còdigo que necesita para iterar sobre la lista cookie_list .

Debe solo use la sintaxis de expresiones del generador cuando necesite escribir un generador que realice una funciòn simple. Imprimir una lista de valores es un buen ejemplo; multiplicar valores en una lista por un n√∫mero especìfico es otro buen ejemplo.

Esto se debe a que, si bien la sintaxis de la expresiòn del generador es clara, está dise√±ada principalmente para expresiones de una lìnea. Si su generador usará más de una lìnea de còdigo, escrìbalo como una funciòn de generador usando la sintaxis que discutimos anteriormente en este artìculo.

¿Por qué se usan los generadores?

La razòn principal por la que se usan los generadores es que son más concisos que los iteradores.

Los generadores son como una funciòn y no necesita ninguna declaraciòn __init__, __iter__ o __next__ para funcionar. Esto es diferente a un iterador que requiere las tres declaraciones. Este comportamiento significa que puede implementar un generador en significativamente menos lìneas de còdigo de lo que podrìa si estuviera escribiendo un iterador.

Además, los generadores son eficientes en el uso de la memoria. Los generadores solo producen un elemento a la vez. No crean una secuencia completa en la memoria antes de devolver un resultado. Esto hace generadores muy prácticos si necesita iterar sobre una gran lista de datos.

La forma en que esto funciona es que los iteradores usan un método de evaluaciòn perezoso. Solo generan el siguiente elemento de un objeto iterable ct cuando se solicita ese elemento.

Conclusiòn (y desafìo)

Los generadores le permiten crear un iterador más Pythonic.

Los generadores facilitan para escribir objetos usando el protocolo de iterador sin tener que escribir declaraciones __init__, __iter__ o __next__. Los generadores se definen como funciones. Usan la declaraciòn de rendimiento para detener un generador y pasar un valor al programa principal antes de regresar a sus operaciones normales.

Si está buscando un desafìo, aquì tiene algunas ideas:

  • Escriba un generador que invierta una cadena.
  • Escriba un generador que solo devuelva valores que contengan una palabra especìfica de una lista de valores.
  • Escriba un generador que multiplique cada n√∫mero en una lista por dos.

Para obtener más informaciòn, consulte nuestro tutorial sobre còmo escribir y utilizar iteradores de Python . ¬°Ahora está listo para comenzar a trabajar con generadores en Python como un experto!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method