iteradores-e-iterables-en-python

Iteradores e Iterables en Python

Un Iterable en Python es cualquier objeto que dispone de un Iterador, y por tanto puede ser recorrido secuencialmente.

Entre los iterables predefinidos se incluyen listas, tuplas, cadenas de texto, conjuntos.

# Ejemplos de iterables
lista = [1, 2, 3, 4, 5]
cadena = "Python"
tupla = (1, 2, 3)
conjunto = {1, 2, 3}

Aunque nosotros podemos crear nuestros propios iterables (como veremos más abajo).

Uso de iterables

Un iterable es cualquier objeto que puede ser recorrido en un bucle for. Por ejemplo, se muestra cómo utilizar un iterable directamente en un bucle for.

# Ejemplo de uso de un iterable en un bucle for
lista = [1, 2, 3, 4, 5]

for elemento in lista:
    print(elemento)

# Salida: 1, 2, 3, 4, 5

Internamente, cuando usamos for para recorrer un objeto Iterable, estamos usando su iterador para obtener los distintos elementos.

¿Qué es un Iterador?

Un Iterador es un elemento que apunta a un elemento, generalmente perteneciente a una colección

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

  • El método __iter__() devuelve el propio objeto iterador
  • El método __next__() devuelve el siguiente elemento en la secuencia

Cuando no hay más elementos que devolver, __next__() lanza una excepción StopIteration.

Creación de un iterador

Vamos a ver cómo podemos crear un iterador personalizado en Python.

# Ejemplo de creación de un iterador personalizado
class Contador:
    def __init__(self, inicio, fin):
        self.inicio = inicio
        self.fin = fin

    def __iter__(self):
        self.numero = self.inicio
        return self

    def __next__(self):
        if self.numero <= self.fin:
            resultado = self.numero
            self.numero += 1
            return resultado
        else:
            raise StopIteration

# Uso del iterador personalizado
contador = Contador(1, 5)
iterador = iter(contador)

for numero in iterador:
    print(numero)

# Salida: 1, 2, 3, 4, 5

Ejemplos prácticos