Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Um iterador é um item que contém um número contável de qualidades.

Um iterador é um item que pode ser iterado depois, implicando que você pode navegar através de cada uma das qualidades.

Tecnicamente, em Python, um iterador é um objeto que implementa o protocolo do iterador, que consiste nos métodos __iter__() e __next__().

Iterador versus Iterável

Registros, tuplos, referências de palavras e conjuntos são, na maioria das vezes, itens iteráveis. Eles são suportes iteráveis dos quais você pode obter um iterador.

Cada um destes itens tem uma técnica iter() que é utilizada para obter um iterador:

Exemplo

Devolva um iterador de um tuple, e imprima cada valor:

mytuple = (“maçã”, “banana”, “cereja”)
myit = iter(mytuple)

print(next(myit))
print(next(myit))print(next(myit))
print(next(myit))

Mesmo as cordas são objetos iteráveis, e podem retornar um iterador:

Exemplo

As cordas também são objetos iteráveis, contendo uma seqüência de caracteres:

mystr = “banana”
myit = iter(mystr)

print(next(myit))
print(next(myit)
)
print(next(myit))
print(next(myit))
print(next(myit))print
(next(myit))print(next(myit))
print(next(myit))

Atravessando um Iterador

Também podemos usar um loop para iterar através de um objeto iterável:

Exemplo

Iterar os valores de um tuple:

mytuple = (“maçã”, “banana”, “cereja”)

para x no mito:
 estampado(x)

Faça um Iterator

Para fazer um item/classe como um iterador você precisa executar as técnicas __iter__() e __next__() para o seu artigo.

Como você aprendeu na parte Python Classes/Items, todas as classes têm uma capacidade chamada __init__(), o que permite que você faça algumas apresentações quando o artigo está sendo feito.

A técnica __iter__() age de forma comparável, você pode fazer tarefas (instante e assim por diante.), mas deve restaurar consistentemente o próprio objeto iterador.

A técnica __next__() adicionalmente permite que você faça atividades e deve restaurar o seguinte no agrupamento.

Exemplo

Criar um iterador que retorna números, começando com 1, e cada sequência aumentará em 1 (retornando 1,2,3,4,5, etc.):

classe MyNumbers:
 def __iter__(self):
 self.a = 1
 self de retorno

  def __next__(self):
 x = self.a
 self.a += 1
 retorno x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))print(next(myiter))print
(next(myiter))


print(next(myiter))
print(next(myiter)
)
print(next(myiter))

StopIteration

O modelo acima procederia sempre no caso de você ter proclamações imediatas() suficientes, ou no caso de ser utilizado em um círculo.

Para evitar a ênfase de continuarmos perpetuamente, podemos utilizar a explicação de StopIteration.

No método __next__(), podemos adicionar uma condição terminal para levantar um erro se a iteração for feita um número especificado de vezes:

Exemplo

Pare depois de 20 iterações:

classe MyNumbers:
 def __iter__(self):
 self.a = 1
 self de retorno

  def __next__(self):
 se self.a <= 20:
 x = self.a
 self.a += 1
 return x
 else:
 raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

para x no myiter:
 estampado(x)