Python bietet viele Möglichkeiten, Elemente aus Listen zu entfernen: die Methoden remove(), pop() und den Operator del. Jeder Ansatz hat seine eigenen Nuancen. Die richtige Wahl hängt davon ab, ob man ein Element nach Wert, Index entfernen, den entfernten Wert erhalten oder einfach ein Element löschen möchte.
Verwirrung zwischen remove(), pop() und del führt häufig zu Fehlern: die falsche Wahl der Methode kann eine Ausnahme auslösen oder das falsche Element löschen. Es ist auch wichtig zu wissen, was mit dem Rückgabewert passiert und wie die verschiedenen Methoden auf das Fehlen eines Elements in der Liste reagieren.
remove(x) entfernt das erste gefundene Element mit dem Wert x – wirft eine Ausnahme ValueError, wenn solches nicht vorhanden ist.pop([i]) entfernt und gibt das Element am Index i zurück (ohne Index – das letzte Element). Wenn der Index außerhalb des Bereichs liegt – wirft IndexError.del list[i] entfernt das Element am Index, ohne einen Wert zurückzugeben. Man kann auch Slices entfernen (del list[i:j]).Beispielcode:
lst = [10, 20, 30, 20] lst.remove(20) # [10, 30, 20] lst.pop(1) # Entfernt 30, [10, 20] del lst[0] # [20]
Wichtige Eigenschaften:
Was passiert, wenn remove() für einen Wert aufgerufen wird, der nicht in der Liste ist?
Es wird ein ValueError ausgelöst:
lst = [1, 2] lst.remove(5) # ValueError: list.remove(x): x not in list
Wie kann man ein Element zurückgeben, das gerade aus der Liste entfernt wurde?
Nur pop gibt das entfernte Element zurück.
lst = [7, 8, 9] x = lst.pop() # x = 9
Kann man del verwenden, um nach Wert zu löschen?
Nein, del funktioniert nur mit Indizes oder Slices. Nach Wert kann man nur über remove löschen.
** Negativer Fall Ein Programmierer schreibt eine Schleife über range(len(lst)) und entfernt Elemente über del – die Indizierung gerät durcheinander, es werden Elemente übersprungen. Vorteile: Eindeutig und "logisch" für Anfänger. Nachteile: Es ist einfach, unerwartetes Verhalten zu erhalten – einige Elemente werden nicht entfernt, die Liste verhält sich nicht wie erwartet. ** Positiver Fall Vor dem Löschen nach Wert gibt es eine Prüfung, pop wird nur verwendet, wenn der Index garantiert ist, das Löschen nach Index erfolgt in umgekehrter Reihenfolge. Vorteile: Der Code ist fehlerresistent, es werden keine Elemente übersprungen. Nachteile: Manchmal ist der Code etwas länger, aber dafür klar und sicher.