Elementweise Addition von Listen: Pythonische Effizienz
Bei der Manipulation von Listen besteht häufig die Notwendigkeit, elementweise Operationen durchzuführen. Betrachten Sie die Aufgabe, Elemente zweier Listen positionell hinzuzufügen, wie unten gezeigt:
list1 = [1, 2, 3] list2 = [4, 5, 6]
Die gewünschte Ausgabe ist:
[1, 2, 3] + + + [4, 5, 6] || || || [5, 7, 9]
Um diese elementweise Addition zu erreichen, gibt es mehrere pythonische Ansätze :
Methode 1: „operator.add“ und „map“
Das Modul „operator.add“ stellt Folgendes bereit notwendige Funktionalität für elementweise Addition. Mithilfe der Kartenfunktion können Sie beide Listen gleichzeitig durchlaufen und den Add-Vorgang anwenden:
from operator import add result = list(map(add, list1, list2))
Methode 2: ZIP und Listenverständnis
Die ZIP-Funktion kombiniert Elemente von Listen zu Tupeln, die in einem Listenverständnis weiter manipuliert werden können. Bei diesem Ansatz werden Werte aus den Tupeln extrahiert und summiert:
result = [sum(x) for x in zip(list1, list2)]
Leistungsüberlegungen
Die Wahl der Methode kann von den Leistungsanforderungen abhängen. Die folgenden Zeitvergleiche zeigen, dass der Ansatz „map(add, list1, list2)“ für große Listen am schnellsten ist. Die zip-basierten Methoden sind aufgrund der zusätzlichen Tupelmanipulation langsamer.
Zum Beispiel bei Listen mit jeweils 100.000 Elementen:
%timeit from operator import add;map(add, list1, list2) 10 loops, best of 3: 44.6 ms per loop %timeit from itertools import izip; [a + b for a, b in izip(list1, list2)] 10 loops, best of 3: 71 ms per loop %timeit [a + b for a, b in zip(list1, list2)] 10 loops, best of 3: 112 ms per loop
Für komplexere Vorgänge können zusätzliche Methoden erforderlich sein. Für die einfache Aufgabe der elementweisen Addition bieten die oben beschriebenen Ansätze jedoch die pythonischsten und effizientesten Lösungen.
Das obige ist der detaillierte Inhalt vonWie kann ich das elementweise Hinzufügen von Listen in Python effizient durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!