Iteradores em Python
O objetivo deste artigo é examinar os iteradores do Python com exemplos para que possam atender às necessidades dos alunos.
Iteradores do Python
Os iteradores do Python são objetos que contêm um número contável de valores.
O valor de um iterador pode ser percorrido várias vezes, indicando que o objeto pode ser iterado.
Os iteradores em Python implementam o protocolo iterador, que consiste nos métodos iter() e next() .
Iterador vs Iterável
Objetos iteráveis incluem listas , tuplas, dicionários e conjuntos . Com os iteradores do Python , eles são contêineres iteráveis que podem ser usados para criar iteradores.
Um iterador pode ser obtido de qualquer um desses objetos chamando seu método iter() .
Forneça um iterador de uma tupla e exiba todos os valores:
Example: 1
Exiba dois valores com um iterador baseado em uma tupla:
Example: 2
Strings também são objetos iteráveis e podem ser retornados como iteradores.
Uma string também é um objeto iterável , incluindo uma sequência de caracteres:
Strings iterable object Example: 1
Strings iterable object Example: 2
Criar um iterador
Você deve implementar os métodos __iter__() e __next__() em seu objeto para criar um iterador.
No capítulo Python Classes/Objects, você aprendeu que todas as classes têm uma função chamada __init__() que permite inicializar o objeto.
Da mesma forma, o método iter() permite que você faça operações (inicialização, etc.), mas você sempre deve fornecer o objeto iterador.
Além disso, o método next() permite que você execute operações e deve fornecer o próximo item.
Implementando um iterador para retornar números que aumentam em cinco a cada vez (retornando 0,5,10,15,20,25, etc.):
Example:
Inverta agora – implemente iteradores Python para retornar números diminuindo em cinco (retornando 25, 20, 15, 10, 5, 0 etc.):
Iterator creation Example: 2
Fazendo um loop através de um iterador
Os iteradores do Python também podem ser invocados com um loop for para iterar por meio de um objeto iterável.
Execute iterações em valores de tupla:
Iterator For Loop Example: 1
Execute iterações nos caracteres de uma string:
Example:
String Iterator For Loop Example: 1
Cada loop em um loop for cria um objeto iterador e executa seu método next() .
Interromper iteração
Em um loop for, ou se você usasse instruções next() suficientes , o exemplo acima nunca terminaria.
Usando a instrução StopIteration, podemos evitar que a iteração continue para sempre.
Podemos adicionar uma condição de parada ao método next() para retornar um erro se a iteração for feita mais do que um determinado número de vezes.
Não continue após 50 iterações:
Stop Iteration Example: 1
Inverta agora:
Example:
Benefícios dos iteradores em Python
Os iteradores em Python oferecem vários benefícios, como:
- Os iteradores permitem a utilização eficiente da memória ao trabalhar com sequências de dados grandes ou infinitas. Em vez de carregar todos os dados na memória de uma vez, os iteradores geram e fornecem elementos um por vez, somente quando solicitados. Isso é particularmente útil ao lidar com grandes conjuntos de dados que não cabem inteiramente na memória.
- Os iteradores oferecem suporte à avaliação preguiçosa, o que significa que eles geram elementos em tempo real à medida que são solicitados. Isso pode melhorar significativamente o desempenho e reduzir o tempo de computação, evitando cálculos desnecessários ou gerando elementos que podem não ser necessários.
- Os iteradores simplificam o processo de loop ou iteração em uma coleção de elementos. Ao fornecer uma interface consistente e padronizada, como o
for
loop, os iteradores abstraem os detalhes subjacentes da recuperação ou geração de dados, tornando o código mais legível e fácil de escrever. - Os iteradores permitem que você defina a lógica de geração de sequência personalizada. Ao implementar os métodos
__iter__()
e__next__()
em uma classe, você pode criar seus próprios objetos iteráveis que produzem elementos com base em regras ou condições específicas. Isso fornece flexibilidade na geração de sequências ou na iteração de estruturas de dados complexas. - Os iteradores se integram perfeitamente com funções integradas como
next()
,iter()
,map()
,filter()
esum()
. Essas funções funcionam com iteradores, permitindo operações de processamento de dados concisas e eficientes. Essa integração permite um estilo de programação funcional e promove a capacidade de reutilização e composição do código.