Iteradores Python

Resumo : neste tutorial, você aprenderá sobre o iterador Python e como definir um iterador personalizado usando o protocolo iterador.

O que é um iterador Python

Um iterador é um objeto que implementa:

  • __iter__método que retorna o próprio objeto.
  • __next__método que retorna o próximo item. Se todos os itens foram retornados, o método gera uma StopIterationexceção.

Observe que esses dois métodos também são conhecidos como protocolo iterador .

Python permite que você use iteradores em forloops, compreensões e outras funções integradas, incluindo map, filter, reducee zip.

Exemplo de iterador Python

Um número quadrado é um produto de um inteiro consigo mesmo. Por exemplo, um quadrado de 2 é 4 (=2*2).

O exemplo a seguir define Squarea classe iteradora que retorna os números quadrados.

class Square:
    def __init__(self, length):
        self.length = length
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.length:
            raise StopIteration

        self.current += 1
        return self.current ** 2Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, inicialize os atributos lengthe currentno __init__método.

O lengthatributo especifica o número de números quadrados que a classe deve retornar. E o currentatributo acompanha o número inteiro atual.

Segundo, implemente o __iter__método que retorna o selfobjeto.

Terceiro, implemente o __next__método que retorna o próximo número quadrado. Se o número de números quadrados retornados for maior que o comprimento, o método gera a exceção. __next__StopIteration

Usando o objeto iterador

A seguir mostramos como usar o Squareiterador em um forloop:

square = Square(5)

for sq in square:
    print(sq)Linguagem de código:  Python  ( python )

Saída:

1
4
9
16
25

Como funciona:

  • Primeiro, crie uma nova instância da Squareclasse.
  • Em seguida, use o forloop para iterar os itens do iterador quadrado.

Depois de iterar todos os itens, o iterador se esgota. Isso significa que você precisa criar um novo iterador para iterar seus itens novamente.

Se você tentar usar o iterador que já está esgotado, receberá a exceção StopIteration. Por exemplo:

next(square)

Erro:

StopIterationLinguagem de código:  JavaScript  ( javascript )

Além disso, um iterador não pode ser reiniciado porque ele possui apenas o __next__método que retorna o próximo item de uma coleção.

Resumo

  • Um iterador é um objeto que implementa __iter__métodos __next__.
  • Um iterador não pode ser reutilizável depois que todos os itens forem retornados.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *