2010-09-24 4 views
101

Avec un objet iterator, y a-t-il quelque chose de plus rapide, de meilleur ou de plus correct qu'une liste de compréhension pour obtenir une liste des objets retournés par l'itérateur?Méthode la plus rapide pour convertir un itérateur en liste

user_list = [user for user in user_iterator] 
+1

Avant d'optimiser cela, être sûr que vous avez fait un certain profilage pour prouver que cela est vraiment le goulot d'étranglement. –

+1

@ S.Lott. Je suis normalement d'accord avec cette attitude mais, dans ce cas, il faudrait beaucoup l'optimiser stylistiquement, ce qui, comme c'est souvent le cas avec Python, l'optimisera aussi pour la vitesse. – aaronasterling

+0

"optimisé stylistiquement"? –

Répondre

193
list(your_iterator) 
+4

En fait, presque toujours un peu plus vite. Aussi, beaucoup plus évident. –

+5

@systempuntoout Il s'exécute entièrement en C. La compréhension de la liste est en python. Bien sûr, ça va plus vite. – aaronasterling

+3

Je déteste encore totalement qu'il n'y ait pas de meilleur moyen en python. Il est fastidieux de devoir éditer les deux côtés d'une expression pour pouvoir la découper ou l'indexer. (très commun dans python3, si c'est une expression pure comme zip, ou une carte avec une fonction pure) –

Questions connexes