Iterador y generador: las palabras clave iter y yield

Habitualmente tendrá que manipular listas que la mayor parte de las veces tendrán un tamaño muy reducido, es decir que contendrán muy pocos elementos, entre 10 y 100. En estos casos, el sistema operativo asigna memoria con el objetivo de almacenar en ella los n elementos contenidos. Esto no representa ningún problema para los tratamientos que necesitan poco espacio de memoria. Pero cuando la lista alcanza un tamaño gigantesco, digamos más de un millón de elementos, ¿cómo solucionar el problema de espacio en memoria o al menos evitarlo? Además de que la Raspberry Pi generalmente no es el entorno ideal para realizar tratamientos que consuman mucha memoria virtual, el tamaño de esta va de 256 MB a más de 4 GB en los últimos modelos.

Es en este tipo de situaciones cuando el uso de un iterador parece indispensable. En la práctica, el uso de un iterador es muy sencillo. A continuación se muestra lo que aparece en REPL:


>>> 2**50  
1073741824  
>>> list(range(0, 2**30))   
Traceback (most recent call last):  
  File "<stdin>", line 1, in <module>  
MemoryError 

La creación de una lista de 1.073.741.824 elementos consumiría demasiada memoria. Python devuelve una excepción MemoryError cuando el tamaño de la estructura de datos a crear es demasiado importante para el sistema.

En Python, un iterador...

Si desea saber más, le proponemos el siguiente libro:
couv_RITRASPYT.png
60-signet.svg
Versión impresa
20-ecran_lettre.svg
Versión online
41-logo_abonnement.svg
En ilimitado con la suscripción ENI
130-boutique.svg
En la tienda oficial de ENI
Anterior
La sintaxis comprensible
Siguiente
La gestión de excepciones con las palabras clave try, except, raise y finally