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

Iteradores en Python: cómo funcionan y cómo crearlos

Los iteradores son objetos que permiten recorrer elementos uno a uno. Python usa iteradores internamente en listas, tuplas, diccionarios, generadores y más. En esta guía aprenderás a usar iter(), next() y a crear tus propios iteradores.

1. ¿Qué es un iterador?

Un iterador es un objeto que implementa los métodos __iter__() y __next__().

lista = [1, 2, 3]
it = iter(lista)
print(next(it))

2. iter() y next()

iter() convierte un iterable en un iterador. next() devuelve el siguiente elemento.

texto = "Python"
it = iter(texto)

print(next(it))
print(next(it))

3. Iterables vs iteradores

lista = [1, 2, 3]
it = iter(lista)  # iterador

4. Crear un iterador propio

class Contador:
    def __init__(self, limite):
        self.limite = limite
        self.actual = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.actual < self.limite:
            self.actual += 1
            return self.actual
        else:
            raise StopIteration

for n in Contador(5):
    print(n)

5. StopIteration

Cuando un iterador no tiene más elementos, debe lanzar StopIteration.

it = iter([1, 2])
print(next(it))
print(next(it))
print(next(it))  # StopIteration

6. Ejercicios

7. Mini‑proyecto: Iterador de líneas numeradas

class Lineas:
    def __init__(self, ruta):
        self.ruta = ruta
        self.lineas = open(ruta).read().splitlines()
        self.i = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.i < len(self.lineas):
            texto = f"{self.i+1}: {self.lineas[self.i]}"
            self.i += 1
            return texto
        raise StopIteration

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

8. Preguntas frecuentes

¿Todos los generadores son iteradores?

Sí, los generadores implementan __iter__ y __next__.

¿Todos los iteradores son generadores?

No, puedes crear iteradores manualmente.


Siguiente guía

JSON en Python →