2010-09-24 6 views
101

Mit einem iterator Objekt, gibt es etwas schneller, besser oder korrekter als ein Listenverständnis, um eine Liste der vom Iterator zurückgegebenen Objekte zu erhalten?Schnellste Möglichkeit, einen Iterator in eine Liste zu konvertieren

user_list = [user for user in user_iterator] 
+1

Vor diesem optimieren, sollten Sie einige Profilierung getan haben wirklich zu beweisen, dass dies der Engpass ist. –

+1

@ S.Lott. Normalerweise stimme ich dieser Einstellung zu, aber in diesem Fall sollte es sehr stilistisch optimiert werden, was es, wie so oft bei Python, auch für die Geschwindigkeit optimieren wird. – aaronasterling

+0

"stilistisch optimiert"? –

Antwort

193
list(your_iterator) 
+4

Eigentlich fast immer ein bisschen schneller. Auch, viel offensichtlicher. –

+5

@systempuntoout Es läuft vollständig in C. Das Listenverständnis ist in Python. Natürlich läuft es schneller. – aaronasterling

+3

Ich hasse immer noch, dass es keinen besseren Weg in Python gibt. Es ist mühsam, beide Seiten eines Ausdrucks bearbeiten zu müssen, nur um sie zu teilen oder zu indizieren. (sehr häufig in python3, wenn es ein reiner Ausdruck wie zip ist, oder Karte mit einer reinen Funktion) –