2010-09-24 29 views
101

iterator nesnesine sahip olmak, yineleyici tarafından döndürülen nesnelerin bir listesini almak için liste anlamadan daha hızlı, daha iyi veya daha doğru bir şey var mı?Yineleyiciyi bir listeye dönüştürmenin en hızlı yolu

user_list = [user for user in user_iterator] 
+1

bu optimize önce, bu gerçekten darboğaz olduğunu kanıtlamak için bazı profil yaptık emin olun. –

+1

@ S.Lott. Normalde bu tavırla aynı fikirdeyim, fakat bu durumda, Python'da olduğu gibi, hız için de optimize edeceği gibi, stilist olarak en uygun hale getirilmelidir. – aaronasterling

+0

"stilistik olarak optimize edilmiş"? –

cevap

193
list(your_iterator) 
+4

Aslında neredeyse her zaman biraz daha hızlı. Ayrıca, çok daha belirgin. –

+5

@systempuntoout Tamamen C dilinde çalışır. Liste kavraması python'dadır. Tabii ki daha hızlı çalışır. – aaronasterling

+3

Python'da daha iyi bir yolun olmamasından hala nefret ediyorum. Bir ifadenin her iki tarafını sadece dilimlemek veya dizine ekleyebilmek için düzenlemek zorunda olmak sıkıcıdır. (python3'te çok yaygındır, eğer zip gibi saf bir ifadeyse veya saf işlevle eşleştiriliyorsa) –

İlgili konular