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)