¿Cuándo no es un buen momento para usar generadores de pitón?
Esto es más bien el inverso de¿Para qué puedes usar las funciones del generador Python?: generadores de python, expresiones de generador y elitertools
El módulo son algunas de mis características favoritas de Python en estos días. Son especialmente útiles al configurar cadenas de operaciones para realizar en una gran pila de datos; a menudo los uso cuando proceso archivos DSV.
Entonces cuando esno un buen momento para usar un generador, o una expresión de generador, o unitertools
¿función?
zip()
terminadoitertools.izip()
orange()
terminadoxrange()
o[x for x in foo]
terminado(x for x in foo)
?Obviamente, eventualmente necesitamos "resolver" un generador en datos reales, generalmente creando una lista o iterando sobre él con un bucle que no sea generador. A veces solo necesitamos saber la longitud. Esto no es lo que estoy preguntando.
Utilizamos generadores para no asignar nuevas listas a la memoria para datos provisionales. Esto tiene sentido especialmente para grandes conjuntos de datos. ¿Tiene sentido también para pequeños conjuntos de datos? ¿Hay un intercambio notable de memoria / CPU?
Estoy especialmente interesado si alguien ha hecho un perfil sobre esto, a la luz de la discusión reveladora deenumerar el rendimiento de comprensión frente a map () y filter (). (enlace alternativo)