Wie man zwei oder mehrere Listen in Python verkettet

  1. + zwei Listen in Python verknüpfen
  2. += um zwei Listen in Python zu verknüpfen
  3. itertools.chain Methode verkettet zwei Listen in Python
  4. extend() Methode zum Verketten von Listen in Python
  5. [*a, *b] Entpackungsmethode in Python-Listenverkettung
  6. Schlussfolgerung

Eine Liste in Python ist eine Datenstruktur, die eine geordnete Sammlung von Elementen enthält.

Eine Operation zum Zusammenkleben zweier Listen wird verketten genannt. Sie können zwei Listen in Python entweder in-place oder out-of-place verknüpfen.

Angenommen, wir haben zwei Listen, die verkettet werden sollen,

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]

Wir könnten mehrere Methoden haben, um sie zu verketten, aber sie unterscheiden sich in der Leistung, wenn die Länge oder die Anzahl der verketteten Listen zunimmt.

Wir stellen diese verschiedenen Methoden vor und geben Ihnen einen Leistungsvergleich.

+ zwei Listen in Python verknüpfen

Der + Operator könnte zwei Listen verknüpfen und eine neue Liste zurückgeben.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = list1 + list2
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

+= um zwei Listen in Python zu verknüpfen

+= ist ähnlich wie die obige Methode, aber es werden die Daten der ersten Liste an Ort und Stelle geändert.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1 += list2
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

itertools.chain Methode verkettet zwei Listen in Python

chain aus dem Modul itertools behandelt aufeinanderfolgende Sequenzen als eine einzige Sequenz,

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> import itertools
>>> result = list(itertools.chain(list1, list2))
[1, 2, 3, 4, 5, 6, 7, 8]
Informationen

itertools.chain hat einen alternativen Konstruktor - intertools.chain.from_iterable(). Er hat ein einziges iterierbares Argument, dessen Eingaben faul ausgewertet werden.

extend() Methode zum Verketten von Listen in Python

Die Methode List extend erweitert die Liste durch Anhängen von Elementen aus der Iterationsliste.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

Sie ändert auch die Daten einer bestehenden Liste an Ort und Stelle, anstatt eine neue Liste zurückzugeben.

[*a, *b] Entpackungsmethode in Python-Listenverkettung

Zusätzliches Entpacken wie * für iterierbare Entpack-Operator und ** für Dictionary-Entpack-Operator sind ab Python 3.5 erweitert, wie in PEP-0448 erklärt wird.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = [*list1, list2]
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

Diese Methode könnte nicht auf den Fall von N Listen anwendbar sein, es sei denn, Sie möchten jede Liste manuell entpacken.

Warnung

Iterationsfähiges Auspacken kann nicht zum Verständnis verwendet werden, wie unten demonstriert wird.

>>> A = [1,2,3]
>>> B = [4,5,6]
>>> C = [7,8,9]
>>> [*t for t in [A,B,C]]
SyntaxError: iterable unpacking cannot be used in comprehension

Schlussfolgerung

Version Vor Ort?
A + B - Nein
list(intertools.chain(a,b)) >=2.3 Nein
[*a, *b] >=3.5 Nein
a += b - Ja
a.extend(b) - Ja

Wir verwenden perfplot Modul bis comapare die Leistung der oben genannten Methoden.

Python-Listenverkettungs-Methoden Leistungsvergleich

Wie in der Grafik gezeigt, sind die Methoden a.extend(b) und a+b in der Leistung fast gleich und die besten unter allen Methoden. Die list(chain(a,b)) Methode hat die schlechteste Performance.

Verwandter Artikel - Python List

  • Wie konvertiert man eine Zeichenkette in Python in eine Liste
  • Liste von Nullen in Python erstellen