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 / Anweisung | Entfernt nach | Gibt entferntes Element zurück? | Fehler wenn Ziel fehlt? |
|---|---|---|---|
list.remove(value) | Erster übereinstimmender Wert | Nein | ValueError |
list.pop() | Letztes Element (Standard) | Ja | IndexError bei leerer Liste |
list.pop(index) | Element am Index | Ja | IndexError wenn außerhalb des Bereichs |
del list[index] | Element am Index | Nein | IndexError wenn außerhalb des Bereichs |
del list[start:stop] | Slice von Elementen | Nein | Nie (leerer Slice ist in Ordnung) |
list.clear() | Alle Elemente | Nein | Nie |
| List-Comprehension | Elemente, die eine Bedingung erfüllen | Nein (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
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
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 listAlle 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
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
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 rangeDie 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
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 NameErrorDie 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
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, oderdel list[index], wenn nicht. - Gesamte Liste leeren? Verwenden Sie
clear(). - Einen Bereich aufeinanderfolgender Elemente entfernen? Verwenden Sie
del list[start:stop].
Verwandte Kapitel
- Python Lists — Erstellen, Indizieren und Grundlagen von Listen verstehen
- Access List Items — Indizierung und Slicing
- Add List Items —
append(),insert(),extend() - Change List Items — Werte in-place aktualisieren
- List Comprehension — Listen filtern und transformieren
- List Methods — vollständige Referenz aller Listenmethoden
- Remove List Duplicates — eine Liste deduplizieren
- Sort Lists —
sort()undsorted()