Vamos discutir sobre o iterador Python neste artigo. O iterador é um objeto com estado e lembra onde está e quando está iterando. Ele retorna o único objeto. Ele usa os métodos ITER () e Next (). Isso é usado para formar loops, compreensões e geradores de python.
Converta qualquer sequência para o iterador usando a seguinte sintaxe:
iter (sequência)Para acessar o próximo elemento, a função Next () é usada. Qualquer objeto em Python, que suporta os dois métodos anteriores, é chamado de iterador. Para verificar isso, execute o método embutido dir () no objeto.
Exemplo: print (dir (list))
Aqui, a lista não é um iterador, pois não possui o método "__Next__".
Se tentarmos acessar os próximos elementos, obtemos a exceção da seguinte forma:
Para convertê -lo como iterador, passe a lista para o método ITER, conforme mostrado no seguinte. Depois disso, vemos o método "__Next__".
Diferença entre iterador e iterável
Iterable significa que podemos fazer um loop sobre os valores como lista, tupla, string etc. Todos os objetos têm um método ITER () usado para obter um iterador. Veremos alguns exemplos para entender melhor:
Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | NUMS = [1,2,3,4,5] NumsIterator = Iter (nums) #same como numsiterator = nums.__iter __ () # Internamente, ele chamará o método __iter__ Dunder Imprimir (Next (NumSiterator)) # Acesso 1º elemento Imprimir (Next (NumsIterator)) # Access 2nd Element Imprima (Next (NumSiterator)) # Access 3º elemento e assim por diante… Imprimir (Próximo (Numsiterator)) Imprimir (Próximo (Numsiterator)) Imprimir (Próximo (Numsiterator)) |
Quando chegamos ao final da lista, ele levanta um erro de parada.
Observação: Qualquer coisa que comece com o sublinhamento duplo e termine com o sublinhado duplo em Python é chamado de método Dunder.
Use o caso de iteradores
Exemplo 1:
Imprimos cada personagem usando o loop for.
1 2 3 4 5 | s = "bom dia" para char em s: impressão (char) |
Exemplo 2:
Imprimos a mesma string usando os iteradores.
1 2 3 4 5 6 7 8 9 10 11 | s = "bom dia" palavra = iter (s) enquanto é verdade: tentar: Item = Next (Word) Imprimir (item) Exceto parada: quebrar |
Exemplo 3:
Para construir nossa própria função de alcance, a função de intervalo fornece o intervalo de valores do início ao fim (exclusivo).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Classe MyRange: def __init __ (self, start, pare): auto.Val = Iniciar auto.Stop = Stop def __iter __ (self): retornar a si mesmo def __next __ (self): se eu.val> = self.parar: levantar a parada atual = self.Val auto.val += 1 Retornar atual NUMS = MyRange (1,5) Imprimir (Next (NUMS)) Imprimir (Next (NUMS)) Imprimir (Next (NUMS)) Imprimir (Next (NUMS)) Imprimir (Next (NUMS)) |
Escrevemos a função de intervalo anterior usando o gerador.
Exemplo 4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def my_range (start, fim): atual = start enquanto atual < end: rendimento de corrente corrente += 1 NUMS = my_range (1,5) Imprimir (Next (NUMS)) Imprimir (Next (NUMS)) Imprimir (Next (NUMS)) Imprimir (Next (NUMS)) |
Ou podemos chamar o seguinte que produz a mesma saída do exemplo anterior.
1 2 3 | para num em nums: impressão (num) |
Conclusão
O iterador não precisa terminar enquanto o valor estiver lá; Isso nos mantém obtendo o valor. Ele busca um valor de cada vez. É realmente útil ao escrever os programas eficientes em memória, onde temos muitos valores que não podemos colocar na memória se os colocarmos em uma lista ou tupla. Podemos salvar o recurso com isso.