# Clase 20 Iteradores y Generadores en Python: Creación y Uso Práctico
"""Iteradores y Generadores"""
for i in range(10):
print(i) # imprime el rango de 10 digitos R// 0 al 9
def fibonacci(max):
"""def funcion fibonacci"""
a, b = 0, 1 # a es cero y b es 1
while a < max: #esta es menor que < la flecha apuntando a la izquierda
yield a
a, b = b, a + b
# pero no esta definido como expresion unica a = 0
# sino que esta dentro de un def
print("=== Creando generador ===")
fib1 = fibonacci(20)
print("=== Primera lista ===")
fib_nums = [num for num in fib1]
print(fib_nums) # [0, 1, 1, 2, 3, 5, 8, 13]
print("=== Segunda lista (vacía) ===")
double_fib_nums = [num * 2 for num in fib1] # no va a funcionar
print(double_fib_nums)
# La secuencia de Fibonacci: cada número es la suma de los dos anteriores
# por ejemplo comienza en cero despues se va sumando en dos en dos
# 0 + 2 = 2// 2 + 2 = 4// 2 + 4 = 6 su resultado dara asi [0, 2, 2, 4, 6]
print("=== Nuevo generador 1 ===")
double_fib_nums = [num * 2 for num in fibonacci(5)]
print(double_fib_nums)
print("=== Nuevo generador 2 ===")
double_fib_nums1 = [num * 2 for num in fibonacci(30)] # similar a new generador 1
print(double_fib_nums1)