Python-Leistungsvergleich: Map() vs. List Comprehensions
In Python sind zwei vielseitige Tools zur Datenmanipulation map() und list Verständnisse. Während beide ähnliche Aufgaben ausführen, kann es Umstände geben, in denen einer dem anderen überlegen ist.
Ist einer effizienter?
In bestimmten Fällen kann map() geringfügig sein schneller als Listenverständnisse, insbesondere wenn dieselbe Funktion für beide Vorgänge verwendet wird. Listenverständnisse können jedoch in Szenarien, in denen map() eine Lambda-Funktion erfordert, eine verbesserte Leistung aufweisen.
Pythonic-Präferenz
Wenn es um den pythonischen Codierungsstil geht, gilt dies für Listenverständnisse allgemein bevorzugt. Pythonisten halten sie oft für geradliniger und klarer. Sie bieten eine prägnante Möglichkeit, Datenelemente zu transformieren und so den Code besser lesbar zu machen.
Leistungsbenchmarks
Um die Leistungsunterschiede zu veranschaulichen, betrachten Sie den folgenden Benchmark mit identischer Funktion (hex) wird verwendet:
$ python -m timeit -s'xs=range(10)' 'map(hex, xs)' 100000 loops, best of 3: 4.86 usec per loop $ python -m timeit -s'xs=range(10)' '[hex(x) for x in xs]' 100000 loops, best of 3: 5.58 usec per loop
In diesem Beispiel ist map() aufgrund des Fehlens eines Lambda mikroskopisch schneller Funktion.
Wenn jedoch eine Lambda-Funktion eingeführt wird, dreht sich der Leistungsvergleich um:
$ python -m timeit -s'xs=range(10)' 'map(lambda x: x+2, xs)' 100000 loops, best of 3: 4.24 usec per loop $ python -m timeit -s'xs=range(10)' '[x+2 for x in xs]' 100000 loops, best of 3: 2.32 usec per loop
Daher sollte die Wahl zwischen map() und Listenverständnis basierend auf Faktoren wie bewertet werden Leistungsanforderungen, Lesbarkeit des Codes und Pythonic-Prinzipien.
Das obige ist der detaillierte Inhalt vonMap() vs. Listenverständnis in Python: Was ist schneller und pythonischer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!