Wie kann ich zwei Listen in Python miteinander verknüpfen?
Beispiel:
listone = [1, 2, 3]
listtwo = [4, 5, 6]
Erwartetes Ergebnis:
>>> joinedlist
[1, 2, 3, 4, 5, 6]
Wie kann ich zwei Listen in Python miteinander verknüpfen?
Beispiel:
listone = [1, 2, 3]
listtwo = [4, 5, 6]
Erwartetes Ergebnis:
>>> joinedlist
[1, 2, 3, 4, 5, 6]
Mit Python 3.3+ können Sie Ertrag aus :
listone = [1,2,3]
listtwo = [4,5,6]
def merge(l1, l2):
yield from l1
yield from l2
>>> list(merge(listone, listtwo))
[1, 2, 3, 4, 5, 6]
Oder, wenn Sie eine beliebige Anzahl von Iteratoren unterstützen wollen:
def merge(*iters):
for it in iters:
yield from it
>>> list(merge(listone, listtwo, 'abcd', [20, 21, 22]))
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd', 20, 21, 22]
Für Fälle mit einer geringen Anzahl von Listen können Sie die Listen einfach addieren oder das Entpacken an Ort und Stelle verwenden (verfügbar in Python-3.5+):
In [1]: listone = [1, 2, 3]
...: listtwo = [4, 5, 6]
In [2]: listone + listtwo
Out[2]: [1, 2, 3, 4, 5, 6]
In [3]: [*listone, *listtwo]
Out[3]: [1, 2, 3, 4, 5, 6]
Als allgemeinere Methode für Fälle mit einer größeren Anzahl von Listen können Sie verwenden chain.from_iterable()
1 Funktion von itertools
Modul. Außerdem, basierend auf diese respuesta diese Funktion ist die beste; oder zumindest eine sehr gute Möglichkeit, auch eine verschachtelte Liste zu flatten.
>>> l=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> import itertools
>>> list(itertools.chain.from_iterable(l))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
1. Beachten Sie, dass chain.from_iterable()
in Python 2.6 und später verfügbar ist. In anderen Versionen verwenden Sie chain(*l)
.
Wenn Sie den Plus-Operator nicht verwenden können ( +
), können Sie die operator
importieren:
import operator
listone = [1,2,3]
listtwo = [4,5,6]
result = operator.add(listone, listtwo)
print(result)
>>> [1, 2, 3, 4, 5, 6]
Alternativ können Sie auch die __add__
dunder Funktion:
listone = [1,2,3]
listtwo = [4,5,6]
result = list.__add__(listone, listtwo)
print(result)
>>> [1, 2, 3, 4, 5, 6]
Wenn Sie zwei geordnete Listen mit komplizierten Sortierregeln zusammenführen müssen, müssen Sie es vielleicht selbst machen, wie im folgenden Code (mit einer einfachen Sortierregel zur besseren Lesbarkeit :-) ).
list1 = [1,2,5]
list2 = [2,3,4]
newlist = []
while list1 and list2:
if list1[0] == list2[0]:
newlist.append(list1.pop(0))
list2.pop(0)
elif list1[0] < list2[0]:
newlist.append(list1.pop(0))
else:
newlist.append(list2.pop(0))
if list1:
newlist.extend(list1)
if list2:
newlist.extend(list2)
assert(newlist == [1, 2, 3, 4, 5])
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.