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