Sie müssen so schnell wie möglich rückwärts über eine Python-Liste iterieren

7

Ich benutze Python 3.2.3. Was ist der schnellste Weg, um eine Liste rückwärts zu durchlaufen? [:: - 1], reversed, list.reverse () oder vielleicht anders? Ich habe es mit einer Liste von ungefähr 5e6 Elementen zu tun, also muss ich wirklich vermeiden, die Liste zu kopieren.

    
wenderen 14.07.2012, 19:50
quelle

2 Antworten

13
%Vor%

Fazit: reversed () ist marginal schneller als l.reverse () in einer Liste mit 100000 Items. Dies gilt natürlich noch mehr, wenn Sie nicht die gesamte Liste durchlaufen und es nicht mehr wahr ist, wenn Sie die Liste mehrmals verwenden.

l[::-1] ist veraltet seit 2.4, das reversed() eingeführt hat.

    
Lennart Regebro 14.07.2012, 20:21
quelle
13

reversed sollte am besten sein, da es einen Iterator zurückgibt, also kopiert es nicht die Liste, sondern liefert jeweils nur ein Element. ( list.reverse() kopiert auch nicht die Liste, aber sie mutiert sie, so dass die Liste rückwärts ist, nachdem Sie fertig sind, während reversed die ursprüngliche Liste nicht ändert.)

    
BrenBarn 14.07.2012 19:51
quelle

Tags und Links