for - python iter method
Iteradores de Python: ¿Qué proporciona el Iterador de iglob() sobre la lista de glob()? (2)
Dada la pieza de código:
from glob import glob, iglob
for fn in glob(''/*''):
print fn
print ''''
for fn in iglob(''/*''):
print fn
Al leer la documentation de glob, veo que glob () devuelve una lista básica de archivos e iglob un iterador. Sin embargo, puedo iterar sobre ambos y la misma lista de archivos es devuelta por cada uno de ellos.
He leído la documentación en Iterator pero no ha arrojado más luz sobre el tema realmente!
Entonces, ¿qué beneficio me proporciona iglob () al devolver un Iterador en la lista de glob ()? ¿Obtengo funcionalidad adicional sobre mi antiguo amigo la lista humilde?
Añadiendo a la respuesta de amit . iglob () es útil en el caso particular en el que si elimina un directorio en la lista, los archivos y carpetas en la lista serán almacenados por glob () y, por lo tanto, el acceso adicional en la excepción de lanzamientos de bucle. Pero al usar iglob () podemos superar la excepción de modificación concurrente
La diferencia se menciona en la propia documentación:
Devuelva un iterador que genere los mismos valores que glob () sin almacenarlos todos simultáneamente.
Básicamente la lista tendrá todos los elementos en memoria. Iterador no necesita, y por lo tanto requiere menos memoria.