HOWTO · Python

Anhängen mehrerer Elemente an eine Liste in Python

Wir können mehrere Elemente an eine Liste anhängen, indem wir die Werte manuell hinzufügen, oder wir können die Methoden append(), extend(), concatenation und itertools verwenden.

Auf dieser Seite

Um die Werte eines Iterables zu einer vorhandenen Python-Liste hinzuzufügen, verwende die Methode extend(). Sie verändert die Liste direkt. Die Methode append() fügt pro Aufruf ein einzelnes Objekt hinzu, während + und itertools.chain mit anschließendem list() eine neue Liste erzeugen. Mit einer Slice-Zuweisung kannst du Werte an einer bestimmten Position einfügen.

Wähle die Methode danach aus, ob du eine Liste verändern möchtest, an welcher Stelle neue Werte erscheinen sollen und ob du ein neues Ergebnis brauchst. Die folgenden Beispiele zeigen das Verhalten der einzelnen Möglichkeiten.

Ein Element mit append() anhängen

append() ist eine Listenmethode, die ihr Argument als einzelnes Objekt am Ende der Liste hinzufügt. Ist das Argument selbst eine Liste, bleibt sie ein einzelnes verschachteltes Element. Bei wiederholten Aufrufen von append() wird mit jedem Aufruf ein Objekt hinzugefügt.

Führe dieses Beispiel aus:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

values = ["red", "blue"]
values.append("green")
print(values)

Um mehrere einzelne Werte hinzuzufügen, könntest du für jeden Wert einmal append() aufrufen. Für einzelne Werte ist diese Methode gedacht. Bei einem Iterable mit mehreren Werten ist extend() meist direkter.

Mehrere Elemente mit extend() hinzufügen

extend() durchläuft ein Iterable und hängt jeden ausgegebenen Wert an die vorhandene Liste an. Die Liste wird dabei verändert, und die Methode gibt None zurück. Verwende deshalb weiterhin die ursprüngliche Listenvariable, statt ihr den Rückgabewert der Methode zuzuweisen.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

colors = ["red", "blue"]
colors.extend(["green", "yellow"])
print(colors)

Das funktioniert auch mit anderen Iterables, etwa einem Tupel oder einer Zeichenkette. Eine Zeichenkette gibt jeweils ein Zeichen aus. Beim Erweitern mit "hi" werden daher "h" und "i" einzeln hinzugefügt. Verwende append(), wenn das Iterable als einzelnes Objekt gespeichert werden soll.

Mehrere Elemente mit einer Slice-Zuweisung einfügen

Eine Slice-Zuweisung ersetzt den ausgewählten Teil einer Liste durch die Werte eines Iterables. Eine leere Slice wählt keine vorhandenen Werte aus. Eine Zuweisung an diese Slice fügt daher die neuen Werte ein und erhält den Rest der Liste. Der Index bestimmt, an welcher Stelle sie erscheinen.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

items = ["a", "d"]
items[1:1] = ["b", "c"]
print(items)

Hier beginnt und endet die Slice am Index 1, sodass beide neuen Werte vor dem ursprünglichen "d" stehen. Eine nicht leere Slice ersetzt dagegen die ausgewählten Werte. Prüfe deshalb die Grenzen der Slice, wenn du Werte einfügen und nicht ersetzen möchtest.

Listen mit + kombinieren

Der Operator + verkettet Listen und gibt eine neue Liste zurück. Er verändert keinen der beiden Operanden. Das ist hilfreich, wenn die ursprünglichen Listen unverändert verfügbar bleiben sollen.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

first = [1, 2]
second = [3, 4]
combined = first + second
print(combined)

Für die Verkettung von Listen müssen beide Operanden Listen sein. Wenn du Werte zu einer vorhandenen Liste hinzufügen möchtest, verwende stattdessen extend(), anstatt ein Verkettungsergebnis zu erstellen und zuzuweisen.

Eine Liste aus Iterables mit itertools.chain erstellen

itertools.chain erzeugt einen Iterator, der die Werte seiner Eingabe-Iterables der Reihe nach ausgibt. Wenn du diese Werte als neue Liste materialisieren möchtest, übergib ihn an list(). Das ist nützlich, wenn die Eingaben bereits Iterables sind oder du die Iteration über mehrere Quellen ausdrücken möchtest; die Eingaben selbst werden dadurch nicht verändert. Die Leistung hängt von den umgebenden Arbeitsschritten und den Daten ab. Einen allgemeinen Effizienzvorteil gegenüber den anderen Möglichkeiten gibt es daher nicht.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

from itertools import chain

numbers = [1, 2]
more_numbers = (3, 4)
combined = list(chain(numbers, more_numbers))
print(combined)

Der Iterator kann auch direkt in einer Schleife durchlaufen werden, ohne eine Liste aufzubauen. Materialisiere ihn nur, wenn du ein Listenergebnis brauchst.

Die passende Methode auswählen

  • Verwende append(), um ein einzelnes Objekt hinzuzufügen, oder wiederholte Aufrufe, wenn du jeden Wert einzeln verarbeitest.
  • Verwende extend(), um alle Werte eines Iterables zu einer vorhandenen Liste hinzuzufügen.
  • Verwende eine Slice-Zuweisung, um Werte eines Iterables an einer bestimmten Position einzufügen. Eine leere Slice fügt sie ein, ohne vorhandene Werte zu ersetzen.
  • Verwende +, wenn du aus zwei Listen eine neue Liste erstellen und die Eingaben unverändert lassen möchtest.
  • Verwende list(itertools.chain(...)), wenn du aus den Werten mehrerer Iterables eine neue Liste erstellen möchtest. Lass list() weg, wenn ein Iterator genügt.

Wenn du mehrere Werte zu einer bereits vorhandenen Liste hinzufügen möchtest, beginne mit extend(). Wähle eine andere Möglichkeit, wenn du Werte an einem Index einfügen, ein separates Verkettungsergebnis erstellen oder einen Iterator über mehrere Quellen verwenden möchtest.