Listen-Methoden
Alle 11 Python-Listen-Methoden im Überblick: append, extend, insert, remove, pop, index, count, sort, reverse, copy und clear – mit Beispielen.
Python-Listen sind veränderliche, geordnete Sequenzen. Da sie veränderlich sind, bietet der Listentyp elf eingebaute Methoden, mit denen Sie Elemente an Ort und Stelle hinzufügen, entfernen, suchen und neu anordnen können – ohne Importe. Diese Seite behandelt jede Methode mit ausführbaren Beispielen, häufigen Fallstricken und Hinweisen dazu, wann welche Methode zu bevorzugen ist.
Verwandte Kapitel: Python Lists · Sort Lists · List Comprehension · Copy Lists
Kurzübersicht
| Methode | Was sie tut | Verändert die Liste? | Gibt zurück |
|---|---|---|---|
append(x) | Ein Element am Ende hinzufügen | Ja | None |
extend(iterable) | Alle Elemente eines Iterables am Ende hinzufügen | Ja | None |
insert(i, x) | Ein Element an Position i einfügen | Ja | None |
remove(x) | Erstes Vorkommen von x entfernen | Ja | None |
pop([i]) | Element an Index i entfernen und zurückgeben (Standard: letztes) | Ja | Entferntes Element |
index(x[, start[, end]]) | Index des ersten Vorkommens von x zurückgeben | Nein | int |
count(x) | Vorkommen von x zählen | Nein | int |
sort([key][, reverse]) | Elemente an Ort und Stelle sortieren | Ja | None |
reverse() | Elemente an Ort und Stelle umkehren | Ja | None |
copy() | Eine flache Kopie zurückgeben | Nein | Neue Liste |
clear() | Alle Elemente entfernen | Ja | None |
Elemente hinzufügen
append()
append(x) fügt ein einzelnes Element x am Ende der Liste hinzu. Es handelt sich um eine amortisierte O(1)-Operation und ist die idiomatische Methode, um eine Liste Element für Element aufzubauen.
append() fügt das Argument immer als ein einziges Element hinzu, auch wenn dieses Argument selbst eine Liste ist:
fruits = ["banana", "orange"]
fruits.append(["apple", "mango"])
print(fruits) # ['banana', 'orange', ['apple', 'mango']]
print(len(fruits)) # 3 — the nested list counts as one elementUm stattdessen alle Elemente einer anderen Liste zusammenzuführen, verwenden Sie extend().
extend()
extend(iterable) hängt jedes Element des angegebenen Iterables an das Ende der Liste an. Das Iterable kann eine Liste, ein Tupel, ein Set, ein String oder ein beliebiges anderes Iterable sein.
extend() ist äquivalent zu fruits += more_fruits. Verwenden Sie es, wenn Sie bereits eine Sammlung von Elementen zum Zusammenführen haben; verwenden Sie append() für ein einzelnes Element.
insert()
insert(i, x) fügt Element x vor Position i ein. Alle vorhandenen Elemente ab Index i verschieben sich um eine Position nach rechts.
insert(0, x)stellt das Element an den Anfang (ist jedoch O(n), da alle Elemente verschoben werden).- Wenn
igrößer oder gleich der Listenlänge ist, wird das Element am Ende angehängt – es wird kein Fehler ausgelöst.
Elemente entfernen
remove()
remove(x) durchsucht die Liste von links nach rechts und löscht das erste Element, das gleich x ist. Falls x nicht gefunden wird, wird ein ValueError ausgelöst.
Schutz vor ValueError:
fruits = ["banana", "orange"]
item = "mango"
if item in fruits:
fruits.remove(item)
else:
print(f"{item} not in list")
# mango not in listpop()
pop(i) entfernt das Element an Index i und gibt es zurück. Der Rückgabewert ist der entscheidende Unterschied zu remove().
pop() ohne Argument entfernt das letzte Element und gibt es zurück – ein gängiges Stack-Muster:
stack = ["a", "b", "c"]
last = stack.pop()
print(stack) # ['a', 'b']
print(last) # cclear()
clear() entfernt jedes Element aus der Liste und lässt sie leer. Es ist äquivalent zu del lst[:], aber besser lesbar.
fruits = ["banana", "apple", "orange"]
fruits.clear()
print(fruits) # []Verwenden Sie clear(), wenn Sie eine Liste leeren möchten, auf die möglicherweise auch andere Variablen verweisen – fruits = [] würde nur den Namen neu binden, während clear() das zugrunde liegende Objekt leert.
Elemente suchen
index()
index(x) gibt den ganzzahligen Index des ersten Vorkommens von x zurück. Es akzeptiert optionale start- und end-Argumente, um die Suche auf einen Teilbereich zu beschränken.
Suche innerhalb eines Bereichs:
items = ["a", "b", "c", "b", "d"]
print(items.index("b")) # 1 — first occurrence
print(items.index("b", 2)) # 3 — first occurrence at index >= 2index() löst einen ValueError aus, wenn das Element fehlt. Verwenden Sie in, um zuerst zu prüfen, wenn das Fehlen möglich ist:
if "mango" in fruits:
pos = fruits.index("mango")count()
count(x) gibt die Anzahl der Vorkommen von x in der Liste zurück.
Im Gegensatz zu index() löst count() für einen fehlenden Wert keinen Fehler aus – es gibt 0 zurück.
Elemente sortieren
sort()
sort() sortiert die Liste an Ort und Stelle standardmäßig in aufsteigender Reihenfolge. Es akzeptiert zwei optionale Schlüsselwortargumente:
reverse=True– in absteigender Reihenfolge sortieren.key=<callable>– eine Funktion, die auf jedes Element vor dem Vergleich angewendet wird.
In absteigender Reihenfolge sortieren:
numbers = [3, 1, 4, 1, 5]
numbers.sort(reverse=True)
print(numbers) # [5, 4, 3, 1, 1]Strings ohne Berücksichtigung der Groß- und Kleinschreibung mit key sortieren:
words = ["banana", "Apple", "cherry", "date"]
words.sort(key=str.lower)
print(words) # ['Apple', 'banana', 'cherry', 'date']sort() verändert die Liste und gibt None zurück. Wenn Sie eine sortierte Kopie benötigen, ohne das Original zu verändern, verwenden Sie stattdessen die eingebaute Funktion sorted():
original = [3, 1, 4]
result = sorted(original)
print(original) # [3, 1, 4] — unchanged
print(result) # [1, 3, 4]Weitere Informationen finden Sie unter Sort Lists, einschließlich benutzerdefinierter Komparatoren und dem Sortieren von Objekten.
reverse()
reverse() kehrt die Liste an Ort und Stelle um. Wie sort() gibt es None zurück.
Um eine umgekehrte Kopie zu erhalten, ohne das Original zu verändern, verwenden Sie reversed() (gibt einen Iterator zurück) oder Slicing:
fruits = ["banana", "apple", "orange"]
print(list(reversed(fruits))) # ['orange', 'apple', 'banana']
print(fruits[::-1]) # ['orange', 'apple', 'banana']
print(fruits) # ['banana', 'apple', 'orange'] — unchangedKopieren
copy()
copy() gibt eine flache Kopie der Liste zurück – ein neues Listenobjekt mit denselben Elementreferenzen.
original = ["banana", "apple", "orange"]
clone = original.copy()
clone.append("mango")
print(original) # ['banana', 'apple', 'orange'] — unchanged
print(clone) # ['banana', 'apple', 'orange', 'mango']„Flach" bedeutet, dass verschachtelte Objekte (wie eine Liste in einer Liste) nicht dupliziert werden – sowohl das Original als auch die Kopie spiegeln Änderungen an diesen verschachtelten Objekten wider. Für ein vollständig unabhängiges Duplikat verwenden Sie copy.deepcopy() aus der Standardbibliothek. Weitere Informationen zu flachen und tiefen Kopien finden Sie unter Copy Lists.
Häufige Fallstricke
Alle veränderlichen Methoden geben None zurück. Ein häufiger Fehler ist die Zuweisung des Ergebnisses von sort(), reverse(), append() usw.:
# Wrong — result is None, not a sorted list
numbers = [3, 1, 2]
numbers = numbers.sort()
print(numbers) # None# Correct — sort() mutates in place
numbers = [3, 1, 2]
numbers.sort()
print(numbers) # [1, 2, 3]remove() und index() lösen einen ValueError für fehlende Elemente aus. Prüfen Sie immer zuerst mit in, oder fangen Sie die Ausnahme ab, wenn das Element möglicherweise nicht vorhanden ist.
append() vs. extend() für Listen. Die Verwendung von append(another_list) schachtelt die Liste als einzelnes Element ein; extend(another_list) fügt ihre Elemente zusammen.