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)