Iteradores e Iteráveis

Em Python, os conceitos de iteradores e iteráveis são fundamentais para trabalhar eficientemente com sequências de dados. Iteráveis são objetos que podem ser iterados (ou seja, percorridos) e os iteradores são objetos que mantêm o estado da iteração e retornam elementos sequenciais. Neste tutorial, vamos explorar iteradores e iteráveis em Python, entender como eles funcionam e como usá-los para percorrer listas, tuplas, dicionários e outros tipos de dados.

1. O Que São Iteráveis em Python?

Iteráveis são objetos que implementam o método __iter__(), que retorna um iterador. Listas, tuplas, dicionários, conjuntos e strings são exemplos de iteráveis em Python.

2. O Que São Iteradores em Python?

Iteradores são objetos que implementam os métodos __iter__() e __next__(). O método __iter__() retorna o próprio objeto iterador e o método __next__() retorna o próximo valor da sequência. Quando não há mais itens para retornar, o método __next__() levanta a exceção StopIteration.

3. Criando um Iterador Simples:

Vamos criar um iterador simples que retorna números pares de 0 a 10.

class NumerosPares:
    def __init__(self):
        self.numero = 0

    def __iter__(self):
        return self

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

numeros_pares = NumerosPares()
for numero in numeros_pares:
    print(numero)  # Saída: 0, 2, 4, 6, 8, 10

4. Usando Iteráveis Embutidos em Python:

Python fornece várias estruturas de dados embutidas que são iteráveis, como listas, tuplas, conjuntos e dicionários.

# Iterando sobre uma lista
lista = [1, 2, 3, 4, 5]
for numero in lista:
    print(numero)

# Iterando sobre um dicionário
dicionario = {'a': 1, 'b': 2, 'c': 3}
for chave, valor in dicionario.items():
    print(chave, valor)

5. Usando a Função iter() e next():

Você também pode criar um iterador usando a função iter() e percorrê-lo usando a função next().

iterador = iter([1, 2, 3, 4, 5])
print(next(iterador))  # Saída: 1
print(next(iterador))  # Saída: 2
print(next(iterador))  # Saída: 3

Entender iteradores e iteráveis é essencial para trabalhar eficientemente com sequências de dados em Python. Ao utilizar iteradores e iteráveis, você pode percorrer listas, tuplas, conjuntos, dicionários e outros tipos de dados de forma eficaz, economizando recursos e tornando seu código mais legível.