Capítulo 5. Iteradores y generadores

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Cuando muchas personas con experiencia en otro lenguaje empiezan a aprender Python, les sorprende la diferencia en la notación de los bucles for. Es decir, en lugar deescribir

# Other languages
for (i=0; i<N; i++) {
    do_work(i);
}

se les presenta una nueva función llamada range:

# Python
for i in range(N):
    do_work(i)

Parece que en el ejemplo de código Python estamos llamando a una función, range, que crea todos los datos que necesitamos para que continúe el bucle for. Intuitivamente, este proceso puede llevar mucho tiempo: si intentamos hacer un bucle con los números del 1 al 100.000.000, ¡tendremos que dedicar mucho tiempo a crear esa matriz! Sin embargo, aquí es donde entran en juego los generadores: básicamente nos permiten evaluar perezosamente este tipo de funciones para que podamos tener la legibilidad del código de estas funciones de propósito especial sin los impactos en el rendimiento.

Para entender este concepto, vamos a implementar una función que calcule varios números de Fibonacci tanto rellenando una lista como ...

Get Python de alto rendimiento, 2ª edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.