W3docs

Listenelemente entfernen

Alle Methoden zum Entfernen von Elementen aus einer Python-Liste: remove(), pop(), del, clear() und List-Comprehensions mit Beispielen und Hinweisen.

Python-Listen sind veränderliche Sequenzen, daher können Elemente jederzeit gelöscht werden. Dieses Kapitel behandelt alle eingebauten Werkzeuge zum Entfernen von Listenelementen: remove(), pop(), die del-Anweisung, clear() und List-Comprehensions. Jeder Ansatz ist für eine andere Situation geeignet, und zu wissen, wann man welchen wählt, verhindert häufige Fehler.

Schnellreferenz

Methode / AnweisungEntfernt nachGibt entferntes Element zurück?Fehler wenn Ziel fehlt?
list.remove(value)Erster übereinstimmender WertNeinValueError
list.pop()Letztes Element (Standard)JaIndexError bei leerer Liste
list.pop(index)Element am IndexJaIndexError wenn außerhalb des Bereichs
del list[index]Element am IndexNeinIndexError wenn außerhalb des Bereichs
del list[start:stop]Slice von ElementenNeinNie (leerer Slice ist in Ordnung)
list.clear()Alle ElementeNeinNie
List-ComprehensionElemente, die eine Bedingung erfüllenNein (gibt neue Liste zurück)Nie

Die Methode remove()

list.remove(value) findet das erste Vorkommen von value und löscht es. Wenn der Wert nicht vorhanden ist, löst Python einen ValueError aus.

Ein Element nach seinem Wert entfernen

python— editable, runs on the server

Nur das erste Vorkommen wird entfernt

Wenn ein Wert mehr als einmal vorkommt, löscht remove() nur die erste Übereinstimmung und lässt die restlichen bestehen:

my_list = [1, 3, 2, 3, 4, 3]
my_list.remove(3)
print(my_list)  # [1, 2, 3, 4, 3]

Schutz vor ValueError

Prüfen Sie immer, ob der Wert vorhanden ist, bevor Sie remove() aufrufen, oder fangen Sie die Ausnahme ab:

Mit in prüfen, bevor entfernt wird

python— editable, runs on the server

Die Ausnahme abfangen

my_list = [1, 2, 4, 5]
try:
    my_list.remove(3)
except ValueError:
    print("3 is not in the list")
# Output: 3 is not in the list

Alle Vorkommen mit einer Schleife entfernen

Verwenden Sie eine while-Schleife, um einen Wert so lange zu entfernen, bis keiner mehr übrig bleibt:

Jedes Vorkommen eines Elements entfernen

python— editable, runs on the server

Die Methode pop()

list.pop(index) entfernt das Element am index und gibt es zurück, sodass Sie den Wert verwenden können. Wenn Sie den Index weglassen, entfernt und gibt die Methode das letzte Element zurück. Das macht pop() ideal, wenn Sie den entfernten Wert weiterverarbeiten möchten.

Das letzte Element entfernen

python— editable, runs on the server

Ein Element an einem bestimmten Index entfernen

my_list = [1, 2, 3, 4, 5]
item = my_list.pop(1)   # removes and returns 2
print(item)             # 2
print(my_list)          # [1, 3, 4, 5]

IndexError bei pop()

Das Aufrufen von pop() auf einer leeren Liste oder mit einem Index außerhalb des Bereichs löst einen IndexError aus:

empty = []
empty.pop()   # IndexError: pop from empty list

my_list = [1, 2, 3]
my_list.pop(10)   # IndexError: pop index out of range

Die del-Anweisung

del entfernt ein Element (oder einen Slice von Elementen) aus einer Liste anhand der Position, ohne etwas zurückzugeben.

Ein einzelnes Element nach Index löschen

Das Element am Index 2 entfernen

python— editable, runs on the server

Einen Slice von Elementen löschen

del akzeptiert dieselbe Slice-Notation wie die Indizierung und ermöglicht so das einfache Entfernen eines Bereichs von Elementen in einem Schritt:

my_list = [1, 2, 3, 4, 5]
del my_list[1:3]   # removes index 1 and 2 (values 2 and 3)
print(my_list)     # [1, 4, 5]

Das Löschen eines leeren oder außerhalb des Bereichs liegenden Slices löst nie einen Fehler aus — es hat schlicht keine Wirkung.

Die gesamte Listenvariable löschen

del kann auch die Listenvariable selbst entfernen, nicht nur ihren Inhalt:

my_list = [1, 2, 3]
del my_list
# my_list is now undefined; referencing it raises NameError

Die Methode clear()

list.clear() entfernt jedes Element aus der Liste und hinterlässt eine leere Liste. Das Listenobjekt selbst bleibt weiterhin bestehen (anders als bei del my_list).

my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list)  # []

clear() ist äquivalent zu del my_list[:] (Löschen des gesamten Slices), liest sich jedoch klarer.

List-Comprehension zur bedingten Entfernung

List-Comprehension erstellt eine neue Liste, indem nur Elemente einbezogen werden, die eine Bedingung erfüllen, und filtert so die zu entfernenden Elemente heraus. Dies ist der klarste Weg, alle Elemente zu entfernen, die einer komplexen Bedingung entsprechen.

Alle Vorkommen eines Werts entfernen

python— editable, runs on the server

Alle geraden Zahlen entfernen

numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_only = [x for x in numbers if x % 2 != 0]
print(odd_only)  # [1, 3, 5, 7]

Da eine Comprehension eine neue Liste zurückgibt anstatt das Original zu ändern, ist sie sicher zu verwenden, wenn Sie das Original unverändert lassen möchten oder wenn Ihre Filterbedingung mehrere Werte gleichzeitig umfasst.

Den richtigen Ansatz wählen

  • Wert bekannt, aber nicht der Index? Verwenden Sie remove() (erste Übereinstimmung) oder eine List-Comprehension (alle Übereinstimmungen oder komplexe Bedingungen).
  • Index bekannt? Verwenden Sie pop(index), wenn Sie den Wert zurückbekommen möchten, oder del list[index], wenn nicht.
  • Gesamte Liste leeren? Verwenden Sie clear().
  • Einen Bereich aufeinanderfolgender Elemente entfernen? Verwenden Sie del list[start:stop].

Verwandte Kapitel

Übungen

Übung
Which of the following can be used to remove items from a Python list?
Which of the following can be used to remove items from a Python list?
Was this page helpful?