Python - Merge zwei Listen mit einer simultanen Verkettung

ListA = [1,2,3]
ListB = [10,20,30]

Ich möchte den Inhalt der Listen zusammenfügen (1 + 10,2 + 20,3 + 30) wodurch die folgende Liste erstellt wird:

ListC = [11,22,33]

Gibt es eine Funktion, die Listen auf diese Weise zusammenführt?

0

2 Antworten

@ iCodez hat eine großartige Antwort gegeben, aber in Fällen, die auf komplexere Situationen zutreffen und zwischen Listen eine gewisse Menge an Manipulation (und Verkettung) erforderlich ist, numpy ist ein großartiges und mächtiges Werkzeug zum Lernen! So würden Sie Ihr Problem mit numpy lösen:

#import it
import numpy as np
#state your lists as numpy arrays
array1 = np.array(ListA)
array2 = np.array(ListB)

Dann werden beide Listen als nupfige Arrays eingerichtet. Jetzt fügen Sie sie nur noch hinzu!

>>> concatenated = array1 + array2
>>> print concatenated
[11, 22, 33]

Nun gibt dies eine Instanz eines numpigen Arrays zurück. Wenn Sie es also als Liste haben wollen, können Sie einfach concatenated.tolist() tun. Wie Sie sehen, ist dies sehr nützlich, wenn Sie mathematische Operationen über Listen hinweg abbilden. Es gibt viel, was Sie mit Numpy tun können, und ich schlage vor, es zu untersuchen.

Hinweis: Ich verstehe, dass die Verwendung von numpy zur Lösung eines solchen einfachen Problems umfangreicher ist als notwendig, aber nur für den Fall, dass dies ein schnelles "Wie löse ich Operationen über mehrere Listen hinweg", würde numpy Ihr Leben erheblich erleichtern!

0
hinzugefügt
Fair genug: vielleicht nur - np.add (ListA, ListB) stattdessen aber ...
hinzugefügt der Autor Jon Clements, Quelle

Das funktioniert:

>>> ListA = [1,2,3]
>>> ListB = [10,20,30]
>>> list(map(sum, zip(ListA, ListB)))
[11, 22, 33]
>>>

Alle oben verwendeten Einbauten werden hier erläutert.


Eine andere Lösung wäre, ein Listenverständnis zu verwenden.

Je nach Geschmack können Sie dies tun:

>>> [sum(x) for x in zip(ListA, ListB)]
[11, 22, 33]
>>>

oder dieses:

>>> [x+y for x,y in zip(ListA, ListB)]
[11, 22, 33]
>>>
0
hinzugefügt
An meinem Ende muss ich [k für k in map (...)] schreiben, damit es die Liste erzeugt, sonst bekomme ich Vielleicht ist das bei Python 3 anders.
hinzugefügt der Autor Lasse Vågsæther Karl, Quelle
Die Funktion 'sum' scheint nicht mit Listenelementen vom Typ string zu arbeiten.
hinzugefügt der Autor multigoodverse, Quelle
@ LasseV.Karlsen - Ja, ist es. Entschuldigen Sie. Ich habe das Python 3.x-Tag nicht gesehen. Ich habe meinen Beitrag aktualisiert.
hinzugefügt der Autor iCodez, Quelle
@ JonClements - aktualisiert.
hinzugefügt der Autor iCodez, Quelle
@ArditS. - Ja, das wird erwartet. sum wird normalerweise in Listen mit Ganzzahlen und/oder Gleitkommazahlen verwendet. Darüber hinaus unterstützt es keine Listen von Strings. Wenn Sie Listen mit Zeichenfolgen zusammenführen möchten, funktioniert meine letzte Lösung möglicherweise für Sie. Andernfalls würde ich empfehlen, dass Sie eine neue Frage stellen, um Hilfe zu erhalten, die für Ihr Problem spezifisch ist.
hinzugefügt der Autor iCodez, Quelle
Vielleicht halten Sie die Liste-comp mehr konsistent mit der map -Ansatz ... [Summe (Elemente) für Elemente in zip (listA, listB)]
hinzugefügt der Autor Jon Clements, Quelle
@ LasseV.Karlsen Ja, in Python 2 gibt map eine Liste zurück, während in Python 3 ein Generatorobjekt zurückgegeben wird.
hinzugefügt der Autor Roberto, Quelle