2010-09-24 11 views
101

Al tener un objeto iterator, ¿hay algo más rápido, mejor o más correcto que una lista de comprensión para obtener una lista de los objetos devueltos por el iterador?La forma más rápida de convertir un iterador en una lista

user_list = [user for user in user_iterator] 
+1

Antes de la optimización de esto, asegúrese de que usted ha hecho algunos perfiles para demostrar que esto realmente es el cuello de botella. –

+1

@ S.Lott. Normalmente estoy de acuerdo con esa actitud, pero, en este caso, debe optimizarse mucho estilísticamente, lo cual, como suele ser el caso con Python, también lo optimizará para la velocidad. – aaronasterling

+0

"optimizado estilísticamente"? –

Respuesta

193
list(your_iterator) 
+4

En realidad, casi siempre bastante más rápido. Además, mucho más obvio. –

+5

@systempuntoout Se ejecuta completamente en C. La lista de comprensión está en python. Por supuesto, corre más rápido. – aaronasterling

+3

Todavía odio totalmente que no haya una mejor manera en Python. Es tedioso tener que editar ambos lados de una expresión solo para poder cortarla o indexarla. (muy común en python3, si es una expresión pura como zip, o mapa con una función pura) –

Cuestiones relacionadas