Una estructura de datos para guardar datos infinitos
¿que son los iterables?
son todos los objetos de datos que podemos recorrer por ejemplo una lista, strings. dicho de otra forma los iterables son aquellas estructuras de datos divisibles en elemtos unicos en un ciclo
pyhton no recorre estos elementos como nosotros creeriamos a simple vista sino que se genera un elemento del tipo iterador que es el que se recorre.
creando iteradores
my_list=[1,2,3,4,5,6]
my_iter=iter(my_list)
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
para poder recorrer todo nuestro objeto iterador usamos un ciclo while con una excepcion
my_list=[1,2,3,4,5,6]
my_iter=iter(my_list)
while True:
try:
element=next(my_iter)
print(element)
except StopIterator
break
El ciclo for es azucar sintactica para recorrer los iterables de una manera mas mas facil
¿Como construyo un iterador?
Para construir un iterador necesitamos una clase con dos metodos iter y next
class evenNumbers:
def __init__ (self, max=None):
self.max=max
def __iter__ (self):
self.num=0
return self
def __next__(self):
if not self.max or self.num <= self.max:
result=self.num
self.num+=2
return result
else:
raise StopIteration
iter
es un atributo que nos ayuda a definir los parametros iniciales de mi iterador y lo retorno para que ete disponible para el futuro
next
en next se ejecuta la logica de mi iterador