Ich dachte, ich würde die Antworten konsolidieren und einige timeit
Ergebnisse zeigen .
Python 2 ist ziemlich schlecht darin, aber es map
ist ein bisschen schneller als das Verstehen.
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import timeit
>>> setup = """import random
random.seed(10)
l = [str(random.randint(0, 99)) for i in range(100)]"""
>>> timeit.timeit('[int(v) for v in l]', setup)
116.25092001434314
>>> timeit.timeit('map(int, l)', setup)
106.66044823117454
Python 3 ist an sich mehr als viermal schneller, aber das Konvertieren des map
Generatorobjekts in eine Liste ist immer noch schneller als das Verstehen, und das Erstellen der Liste durch Entpacken des map
Generators (danke Artem!) Ist noch etwas schneller.
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import timeit
>>> setup = """import random
random.seed(10)
l = [str(random.randint(0, 99)) for i in range(100)]"""
>>> timeit.timeit('[int(v) for v in l]', setup)
25.133059591551955
>>> timeit.timeit('list(map(int, l))', setup)
19.705547827217515
>>> timeit.timeit('[*map(int, l)]', setup)
19.45838406513076
Hinweis: In Python 3 scheinen 4 Elemente der Übergangspunkt zu sein (3 in Python 2), an dem das Verständnis etwas schneller ist, obwohl das Entpacken des Generators immer noch schneller ist als bei Listen mit mehr als 1 Element.