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]

264voto

Radagast Punkte 5324

Sie können Sets verwenden, um eine zusammengefasste Liste eindeutiger Werte zu erhalten

mergedlist = list(set(listone + listtwo))

95voto

Tuure Laurinolli Punkte 3768

Das ist ganz einfach, und ich glaube, es wurde sogar in das Tutorial :

>>> listone = [1,2,3]
>>> listtwo = [4,5,6]
>>>
>>> listone + listtwo
[1, 2, 3, 4, 5, 6]

72voto

wonder.mice Punkte 6676

In dieser Frage wird direkt nach der Verbindung zweier Listen gefragt. Sie steht jedoch ziemlich weit oben in den Suchergebnissen, auch wenn Sie nach einer Möglichkeit suchen, viele Listen zu verbinden (einschließlich des Falls, dass Sie keine Listen verbinden).

Ich denke, die beste Option ist die Verwendung von Listenauffassungen:

>>> a = [[1,2,3], [4,5,6], [7,8,9]]
>>> [x for xs in a for x in xs]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Sie können auch Generatoren erstellen:

>>> map(str, (x for xs in a for x in xs))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

Alte Antwort

Betrachten Sie diesen allgemeineren Ansatz:

a = [[1,2,3], [4,5,6], [7,8,9]]
reduce(lambda c, x: c + x, a, [])

Wird ausgegeben:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Beachten Sie, dass dies auch korrekt funktioniert, wenn a es [] o [[1,2,3]] .

Dies lässt sich jedoch effizienter bewerkstelligen mit itertools :

a = [[1,2,3], [4,5,6], [7,8,9]]
list(itertools.chain(*a))

Wenn Sie keine list sondern nur eine Iterable, weglassen list() .

Update

Die von Patrick Collins in den Kommentaren vorgeschlagene Alternative könnte auch für Sie funktionieren:

sum(a, [])

50voto

Amyth Punkte 31529

Sie könnten einfach die + o += Operator wie folgt:

a = [1, 2, 3]
b = [4, 5, 6]

c = a + b

Oder:

c = []
a = [1, 2, 3]
b = [4, 5, 6]

c += (a + b)

Wenn Sie möchten, dass die Werte in der zusammengeführten Liste eindeutig sind, können Sie dies ebenfalls tun:

c = list(set(a + b))

36voto

Dariusz Walczak Punkte 4618

Es ist erwähnenswert, dass die itertools.chain Funktion akzeptiert eine variable Anzahl von Argumenten:

>>> l1 = ['a']; l2 = ['b', 'c']; l3 = ['d', 'e', 'f']
>>> [i for i in itertools.chain(l1, l2)]
['a', 'b', 'c']
>>> [i for i in itertools.chain(l1, l2, l3)]
['a', 'b', 'c', 'd', 'e', 'f']

Wenn eine iterierbare Datei (Tupel, Liste, Generator usw.) die Eingabe ist, wird die from_iterable Methode der Klasse verwendet werden kann:

>>> il = [['a'], ['b', 'c'], ['d', 'e', 'f']]
>>> [i for i in itertools.chain.from_iterable(il)]
['a', 'b', 'c', 'd', 'e', 'f']

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