single
Funciones Generadoras
Desliza para mostrar el menú
Una función generadora es un tipo especial de función que utiliza la palabra clave yield en lugar de return para generar una secuencia de valores. Cuando se llama a una función generadora, devuelve un objeto iterador, que puede ser recorrido para obtener los valores uno a uno.
La principal ventaja de las funciones generadoras es su eficiencia de memoria. En lugar de generar toda la secuencia de antemano y almacenarla en memoria, los generadores producen los valores en el momento en que se necesitan.
Cómo funciona yield
A diferencia de return, que finaliza completamente la función, yield pausa la función y guarda su estado. La próxima vez que se llama a next(), el generador se reanuda exactamente desde donde se detuvo:
12345678910def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3
También se puede iterar sobre un generador utilizando un bucle for; este llama automáticamente a next() hasta que el generador se agota:
1234567def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Una vez que un generador se agota (no quedan más valores para producir), llamar a next() sobre él generará un error StopIteration. Un bucle for maneja esto automáticamente.
Desliza para comenzar a programar
Implementa una función generadora even_numbers que produzca números pares dentro de un rango dado.
- Definir una función generadora
even_numbersque reciba dos parámetros:startystop. - Utilizar un bucle
whilepara iterar mientrasstartsea menor o igual questop. - Usar
yieldpara devolverstartsolo si es par (divisible por 2). - Incrementar
starten 1 después de cada iteración. - Utilizar un bucle
forpara imprimir todos los valores generados.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla