Un iterador es un elemento que contiene un número incontable de cualidades.

Un iterador es un elemento que puede ser iterado después, lo que implica que puedes navegar a través de cada una de las cualidades.

Técnicamente, en Python, un iterador es un objeto que implementa el protocolo iterador, que consiste en los métodos __iter__() y __next__().

Iterator versus Iterable

Los discos, las tuplas, las referencias de palabras y los conjuntos son en su mayoría elementos iterativos. Son soportes iterables de los que puedes obtener un iterador.

Cada uno de estos artículos tiene una técnica de iter() que se utiliza para obtener un iterador:

Ejemplo

Devuelve un iterador de una tupla, e imprime cada valor:

mytuple = (“manzana”, “plátano”, “cereza”)
myit = iter(mytuple)

imprimir(siguiente(myit))
imprimir(siguiente(myit))
imprimir(siguiente(myit))

Incluso las cuerdas son objetos iterables, y pueden devolver un iterador:

Ejemplo

Las cuerdas son también objetos iterables, que contienen una secuencia de caracteres:

mystr = “banana”
myit = iter(mystr)

imprimir(siguiente(myit))
imprimir(siguiente(myit))
imprimir(siguiente(myit))
imprimir(siguiente(myit))imprimir
(siguiente(myit))imprimir
(siguiente(myit))

El bucle a través de un Iterator

También podemos usar un bucle de for para iterar a través de un objeto iterable:

Ejemplo

Iterar los valores de una tupla:

mytuple = (“manzana”, “plátano”, “cereza”)

para x en mituple:
 print(x)

Hacer un Iterator

Para hacer un artículo/clase como un iterador necesitas ejecutar las técnicas __iter__() y __next__() a tu artículo.

Como has aprendido en la parte de las clases de pitón/artículos, todas las clases tienen una capacidad llamada __init__(), que te permite hacer algunas introducciones cuando se está haciendo el artículo.

La técnica __iter__() actúa de manera comparable, puede hacer tareas (instar y así sucesivamente.), pero debe restaurar consistentemente el objeto iterador mismo.

La técnica __next__() permite adicionalmente realizar actividades, y debe restaurar lo siguiente en la agrupación.

Ejemplo

Crea un iterador que devuelva los números, empezando por 1, y cada secuencia aumentará en uno (devolviendo 1,2,3,4,5 etc.):

clase MyNumbers: def __iter__(self): self.a = 1 return
 self
  def __siguiente__(self):
 x = self.a self.a += 1
 retorno x

myclass = MyNumbers()
myiter = iter(mi clase)

imprimir (siguiente (miiter))
 imprimir (siguiente (miiter))
 imprimir (siguiente (miiter))


imprimir(siguiente(miiter))
imprimir(siguiente(miiter))

StopIteration

El modelo anterior procedería siempre en el caso de que tuviera suficientes proclamaciones inmediatas, o en el caso de que se utilizara en un círculo para.

Para evitar el énfasis de continuar perpetuamente, podemos utilizar la explicación de StopIteration.

En el método __next__(), podemos añadir una condición de terminación para elevar un error si la iteración se hace un número determinado de veces:

Ejemplo

Pare después de 20 iteraciones:

clase MyNumbers: def __iter__(self): self.a = 1 return
 self
  def __siguiente__(self):
 si self.a <= 20:
 x = self.a
 self.a += 1 return
 x
 else:
 raise StopIteration

myclass = MyNumbers()
myiter = iter(mi clase)

para x en miiter:
 print(x)