Iterador de pitón

Iterador de pitón

Vamos a discutir sobre el iterador de Python en este artículo. Iterador es un objeto con estado y recuerda dónde está y cuándo está iterando. Devuelve el objeto único. Utiliza los métodos iter () y Next (). Esto se usa para formar los bucles, comprensiones y generadores de pitón.

Convierta cualquier secuencia al iterador utilizando la siguiente sintaxis:

iter (secuencia)

Para acceder al siguiente elemento, se usa la función siguiente (). Cualquier objeto en Python que admite los dos métodos anteriores se llama iterador. Para verificar esto, ejecute el método incorporado dir () en el objeto.

Ejemplo: imprimir (dir (lista))

Aquí, la lista no es un iterador, ya que no tiene el método "__next__".

Si intentamos acceder a los próximos elementos, obtenemos la excepción de la siguiente manera:

Para convertirlo como iterador, pase la lista al método ITER como se muestra en el siguiente. Después de eso, vemos el método "__next__".

Diferencia entre iterador y iterable

Iterable significa que podemos recurrir a los valores como List, Tuple, String, etc. Todos los objetos tienen un método iter () que se utiliza para obtener un iterador. Veremos algunos ejemplos para entenderlo mejor:

Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
nums = [1,2,3,4,5]
numSiterator = iter (nums) #same como numSiterator = nums.__iter __ ()
# Internamente llamará al método __iter__ dunder
imprimir (siguiente (numSiterator)) # Access 1st Element
imprimir (siguiente (numSiterator)) # Access 2do elemento
Imprimir (Next (NumSiterator)) # Access 3er elemento y así sucesivamente ..
Imprimir (Siguiente (NumSiterator))
Imprimir (Siguiente (NumSiterator))
Imprimir (Siguiente (NumSiterator))

Cuando llegamos al final de la lista, plantea un error de stopiteration.

Nota: Cualquier cosa que comience con el doble bajo y termina con el doble bajo en Python se llama Dunder Method.

Caso de uso de los iteradores

  1. El bucle para los iteradores en segundo plano.

Ejemplo 1:

Imprimimos cada personaje usando el bucle for For.

1
2
3
4
5
S = "Buenos días"
para char en s:
Imprimir (Char)

Ejemplo 2:

Imprimimos la misma cadena usando los iteradores.

1
2
3
4
5
6
7
8
9
10
11
S = "Buenos días"
palabra = iter (s)
Mientras que es cierto:
intentar:
Artículo = Siguiente (palabra)
Imprimir (Artículo)
Excepto la paro:
romper
  1. Otro caso de uso del iterador es agregar los métodos Next () y iter () a nuestra clase y hacerlo como Iterable.

Ejemplo 3:

Para construir nuestra propia función de rango, la función de rango proporciona el rango de valores de principio a fin (exclusivo).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
Myrange de clase:
def __init __ (self, comenzar, parar):
ser.val = inicio
ser.parar = parar
def __iter __ (self):
volver a ser
def __next __ (self):
Si uno mismo.val> = yo.detener:
elevar la stopiteration
actual = yo.Val
ser.Val += 1
retorno corriente
Nums = MyRange (1,5)
Imprimir (Siguiente (NUMS))
Imprimir (Siguiente (NUMS))
Imprimir (Siguiente (NUMS))
Imprimir (Siguiente (NUMS))
Imprimir (Siguiente (NUMS))
  1. Otro caso de uso del iterador es Python Generators. Los generadores son un método normal que produce el valor como salida y recuerda el estado cuando se llama la próxima vez. Los generadores también son iteradores, pero los métodos Dunder iter () y Next () se crean automáticamente.

Escribimos la función de rango anterior usando el generador.

Ejemplo 4:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
def my_range (inicio, final):
actual = inicio
Mientras que actual < end:
rendimiento de corriente
corriente += 1
nums = my_range (1,5)
Imprimir (Siguiente (NUMS))
Imprimir (Siguiente (NUMS))
Imprimir (Siguiente (NUMS))
Imprimir (Siguiente (NUMS))

O podemos llamar a lo siguiente que produce la misma salida que el ejemplo anterior.

1
2
3
Para NUM en NUMS:
Imprimir (NUM)

Conclusión

El iterador no necesita terminar mientras el valor esté allí; nos mantiene obteniendo el valor. Obtiene un valor a la vez. Es realmente útil al escribir los programas de memoria eficiente en la memoria donde tenemos muchos valores que no podemos poner en la memoria si los ponemos en una lista o tupla. Podemos guardar el recurso con este.