Generadores de Python: ¡escriba un código súper eficiente!

Jan 19 2023
Los generadores de Python son un tipo especial de función que le permite iterar sobre una secuencia de valores, sin tener que almacenar toda la secuencia en la memoria. Son una poderosa herramienta para trabajar con grandes conjuntos de datos o para generar infinitas secuencias de valores.

Los generadores de Python son un tipo especial de función que le permite iterar sobre una secuencia de valores, sin tener que almacenar toda la secuencia en la memoria. Son una poderosa herramienta para trabajar con grandes conjuntos de datos o para generar infinitas secuencias de valores.

¿Qué es diferente de una función normal?

Una función de generador se define como una función normal, pero en lugar de usar la palabra clave return, usa la palabra clave yield . Cuando se llama a una función generadora, devuelve un objeto iterador, que se puede usar para iterar sobre los valores generados por la función.

¿Por qué usar generadores?

Una de las principales ventajas de los generadores es que son eficientes en memoria. Debido a que solo generan un valor a la vez, pueden manejar grandes conjuntos de datos o secuencias infinitas sin consumir mucha memoria.

Otra ventaja de los generadores es que son perezosos. Esto significa que solo generan valores a medida que se necesitan, en lugar de generar todos los valores por adelantado. Esto puede ser útil para trabajar con grandes conjuntos de datos o para generar secuencias infinitas.

Bien.. ¿cómo usarlo?

La siguiente función generadora genera la secuencia de Fibonacci:

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
print(next(fib)) # 0
print(next(fib)) # 1
print(next(fib)) # 1
print(next(fib)) # 2

for number in fibonacci():
    if number > 100:
        break
    print(number)

Los generadores también se pueden usar en combinación con otras funciones de Python, como la comprensión de listas o el módulo itertools, para crear código potente y expresivo. ¡Puedes probarlo tú mismo!

Buena suerte Shilo