IOKELU
Nivel: Intermedio
💡 Prueba el código:
Puedes ejecutar cualquier ejemplo de esta guía directamente en nuestra consola interactiva: Abrir consola de Python →

Generadores en Python: iteración eficiente y memoria optimizada

Los generadores permiten crear iteradores de forma eficiente, produciendo valores uno a uno sin almacenar listas completas en memoria. Son ideales para manejar grandes cantidades de datos, streams y operaciones secuenciales.

1. ¿Qué es un generador?

Un generador es una función que devuelve valores uno a uno usando yield, en lugar de crear listas completas.

def contador():
    yield 1
    yield 2
    yield 3

2. La palabra clave yield

yield pausa la función y devuelve un valor, retomando desde ese punto en la siguiente llamada.

def pares(n):
    for i in range(n):
        if i % 2 == 0:
            yield i

for p in pares(10):
    print(p)

3. Generadores por expresión

Son similares a las list comprehensions, pero con paréntesis.

gen = (x * 2 for x in range(5))

for n in gen:
    print(n)

4. Ventajas de los generadores

5. Ejercicios

6. Mini‑proyecto: Generador de líneas de archivo

def leer_lineas(ruta):
    with open(ruta, "r") as archivo:
        for linea in archivo:
            yield linea.strip()

for linea in leer_lineas("datos.txt"):
    print(linea)

7. Preguntas frecuentes

¿Los generadores reemplazan listas?

No, solo cuando necesitas eficiencia.

¿Puedo convertir un generador en lista?

Sí, usando list(generador).


Siguiente guía

Iteradores en Python →