Ich habe die folgenden zwei Listen:
first = [1,2,3,4,5]
second = [6,7,8,9,10]
Jetzt möchte ich die Elemente aus diesen beiden Listen zu einer neuen Liste hinzufügen.
Ausgabe sollte sein
third = [7,9,11,13,15]
Die zip
Funktion ist hier nützlich und wird mit einem Listenverständnis verwendet.
[x + y for x, y in zip(first, second)]
Wenn Sie eine Liste von Listen haben (anstelle von nur zwei Listen):
lists_of_lists = [[1, 2, 3], [4, 5, 6]]
[sum(x) for x in zip(*lists_of_lists)]
# -> [5, 7, 9]
first
also Länge 10 undsecond
Länge 6 ist, ist das Ergebnis des Zippens der Iterables Länge 6.>>> lists_of_lists = [[1, 2, 3], [4, 5, 6]]
>>> [sum(x) for x in zip(*lists_of_lists)]
[5, 7, 9]
Aus Dokumenten
quelle
Angenommen, beide Listen
a
undb
haben gleiche Länge haben , brauchen Sie nicht zip, numpy oder irgendetwas anderes.Python 2.x und 3.x:
quelle
Das Standardverhalten in numpy ist das komponentenweise Hinzufügen
welche Ausgänge
quelle
Dies erstreckt sich auf eine beliebige Anzahl von Listen:
In Ihrem Fall
myListOfLists
wäre[first, second]
quelle
izip.from_iterable
?chain
. AktualisiertVersuchen Sie den folgenden Code:
quelle
map(sum, zip(first, second, third, fourth, ...))
Der einfache und schnelle Weg, dies zu tun, ist:
Alternativ können Sie numpy sum verwenden:
quelle
quelle
Einzeilerlösung
quelle
Meine Antwort wird mit Thirus wiederholt, der sie am 17. März um 9:25 Uhr beantwortete.
Es war einfacher und schneller, hier sind seine Lösungen:
Du brauchst Numpy!
Das numpy-Array könnte eine Operation wie Vektoren ausführenquelle
Wenn Sie eine unbekannte Anzahl von Listen gleicher Länge haben, können Sie die folgende Funktion verwenden.
Hier akzeptiert * args eine variable Anzahl von Listenargumenten (summiert jedoch jeweils nur die gleiche Anzahl von Elementen). Das * wird erneut verwendet, um die Elemente in jeder der Listen zu entpacken.
Ausgabe:
Oder mit 3 Listen
Ausgabe:
quelle
Sie können verwenden
zip()
, wodurch die beiden Arrays miteinander "verschachtelt" werden und anschließendmap()
eine Funktion auf jedes Element in einer Iteration angewendet wird:quelle
Hier ist eine andere Möglichkeit, dies zu tun. Wir nutzen die interne __add__ -Funktion von Python:
Ausgabe
quelle
Wenn Sie auch den Rest der Werte in den Listen hinzufügen möchten, können Sie dies verwenden (dies funktioniert in Python3.5).
quelle
quelle
Hier ist ein anderer Weg, es zu tun. Es funktioniert gut für mich.
quelle
quelle
Vielleicht der einfachste Ansatz:
quelle
Wenn Sie Ihre Listen als numpy-Array betrachten, müssen Sie sie einfach summieren:
quelle
Was ist, wenn Sie eine Liste mit unterschiedlicher Länge haben, dann können Sie so etwas ausprobieren (mit
zip_longest
)quelle
Sie können diese Methode verwenden, sie funktioniert jedoch nur, wenn beide Listen dieselbe Größe haben:
quelle