Iterador Python

Iterador Python

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

  1. O loop for usa iteradores em segundo plano.

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
  1. Outro caso de uso do iterador está adicionando os métodos Next () e Iter () à nossa classe e tornam -o como iterável.

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))
  1. Outro caso de uso do iterador são os geradores python. Os geradores são um método normal que produz o valor como saída e lembra o estado quando é chamado na próxima vez. Os geradores também são iteradores, mas os métodos Dunder Iter () e Next () são criados automaticamente.

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.