3238 Stimmen

Wie kann ich zwei Listen in Python miteinander verknüpfen?

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]

35voto

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]

35voto

Mazdak Punkte 99901

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).

27voto

lavee_singh Punkte 1303

Wenn Sie die beiden Listen in sortierter Form zusammenführen möchten, können Sie die Funktion merge Funktion aus der heapq Bibliothek.

from heapq import merge

a = [1, 2, 4]
b = [2, 4, 6, 7]

print list(merge(a, b))

23voto

jpihl Punkte 7501

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]

16voto

Mr Shark Punkte 24994

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.com

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.

Powered by:

X