generador de python
Funciones y métodos de Python
Michael Zippo
01.11.2021
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:
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.
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.
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.