Tutorial Python

Python HOME Introdução ao Python Introdução ao Python Sintaxe do Python Comentários do Python Variáveis ​​Python Tipos de dados Python Números Python Conversão de Python Strings Python Booleanos Python Operadores Python Listas Python Tuplas Python Conjuntos Python Dicionários Python Python Se... Senão Python While Loops Python para loops Funções do Python Python Lambda Matrizes Python Classes/objetos Python Herança Python Iteradores Python Escopo do Python Módulos Python Datas em Python Matemática Python Python JSON Python RegEx Python PIP Python Tente...Exceto Entrada do usuário Python Formatação de String Python

Manipulação de arquivos

Manipulação de arquivos Python Arquivos de leitura do Python Python Gravar/Criar Arquivos Arquivos de exclusão do Python

Módulos Python

Tutorial NumPy Passo a passo do Panda Tutorial Scipy

Python Matplotlib

Introdução ao Matplotlib Introdução ao Matplotlib Matplotlib Pyplot Plotagem Matplotlib Marcadores Matplotlib Linha Matplotlib Etiquetas Matplotlib Grade Matplotlib Subtramas do Matplotlib Dispersão Matplotlib Barras Matplotlib Histogramas Matplotlib Gráficos de pizza Matplotlib

Aprendizado de máquina

Começando Modo Mediano Médio Desvio padrão Percentil Distribuição de dados Distribuição normal de dados Gráfico de dispersão Regressão linear Regressão Polinomial Regressão múltipla Régua Treinar/Teste Árvore de decisão

Python MySQL

Introdução ao MySQL MySQL Criar banco de dados MySQL Criar Tabela Inserir MySQL Seleção do MySQL MySQL Onde MySQL Ordenar por Excluir MySQL Tabela de descarte do MySQL Atualização do MySQL Limite do MySQL Associação do MySQL

Python MongoDB

Introdução ao MongoDB Banco de dados de criação do MongoDB Criar coleção do MongoDB Inserir MongoDB MongoDB Find Consulta do MongoDB Classificação do MongoDB Excluir MongoDB Coleção de Drops do MongoDB Atualização do MongoDB Limite do MongoDB

Referência Python

Visão geral do Python Funções incorporadas do Python Métodos de string do Python Métodos de lista do Python Métodos de dicionário Python Métodos de Tupla Python Métodos de conjunto do Python Métodos de arquivo Python Palavras-chave Python Exceções do Python Glossário Python

Referência do Módulo

Módulo Aleatório Módulo de solicitações Módulo de Estatísticas Módulo de matemática cMódulo de matemática

Python Como fazer

Remover duplicatas de lista Inverter uma string Adicionar dois números

Exemplos de Python

Exemplos de Python Compilador Python Exercícios de Python Teste do Python Certificado Python

Iteradores Python


Iteradores Python

Um iterador é um objeto que contém um número contável de valores.

Um iterador é um objeto que pode ser iterado, o que significa que você pode percorrer todos os valores.

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


Iterador vs Iterável

Listas, tuplas, dicionários e conjuntos são todos objetos iteráveis. Eles são contêineres iteráveis dos quais você pode obter um iterador.

Todos esses objetos têm um iter()método que é usado para obter um iterador:

Exemplo

Retorne um iterador de uma tupla e imprima cada valor:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

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

Mesmo strings são objetos iteráveis ​​e podem retornar um iterador:

Exemplo

Strings também são objetos iteráveis, contendo uma sequê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))

Fazendo um loop através de um iterador

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

Exemplo

Iterar os valores de uma tupla:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

Exemplo

Iterar os caracteres de uma string:

mystr = "banana"

for x in mystr:
  print(x)

O forloop na verdade cria um objeto iterador e executa o método next() para cada loop.



Criar um iterador

Para criar um objeto/classe como um iterador, você precisa implementar os métodos __iter__()e __next__()seu objeto.

Como você aprendeu no capítulo Classes/Objetos do Python , todas as classes têm uma função chamada __init__(), que permite que você inicialize quando o objeto estiver sendo criado.

O __iter__()método age de forma semelhante, você pode fazer operações (inicialização etc.), mas deve sempre retornar o próprio objeto iterador.

O __next__()método também permite fazer operações, devendo retornar o próximo item na sequência.

Exemplo

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

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

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

myclass = MyNumbers()
myiter = iter(myclass)

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

Parar Iteração

O exemplo acima continuaria para sempre se você tivesse instruções next() suficientes ou se fosse usado em um forloop.

Para evitar que a iteração continue para sempre, podemos usar a StopIterationinstrução.

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

Exemplo

Pare após 20 iterações:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

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

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)