Liste Comprehensions ist kompakt und schneller als eine explizite for
Schleife Aufbau eine Liste:
def slower():
result = []
for elem in some_iterable:
result.append(elem)
return result
def faster():
return [elem for elem in some_iterable]
Dies weil rufe .append()
auf einem list
bewirkt, dass das List-Objekt (in Blöcken) zu wachsen, um Platz zu schaffen für neue Elemente einzeln, während die Liste Verständnis sammelt alle Elemente, bevor Sie die list
Schaffung der Elemente in einem Rutsch passen:
>>> some_iterable = range(1000)
>>> import timeit
>>> timeit.timeit('f()', 'from __main__ import slower as f', number=10000)
1.4456570148468018
>>> timeit.timeit('f()', 'from __main__ import faster as f', number=10000)
0.49323201179504395
Ich denke, dass sie in den meisten (wenn nicht allen) Fällen schneller sind als für Schleifen. Das heißt, abgesehen von der Schönheit von ihnen :) – BenDundee
Vorteil gegenüber was? –
"Wir erwarten, dass Antworten durch Fakten, Referenzen oder spezifische Fachkenntnisse gestützt werden, aber diese Frage wird wahrscheinlich Debatten, Argumente, Umfragen oder ausgedehnte Diskussionen anregen." Es scheint, dass diese Frage mit "spezifischen Fakten [und] spezifischem Fachwissen" unterstützt werden kann. Als geschlossen zu markieren ist BS, IMO. – BenDundee