Listenelemente ändern
Listenelemente in Python ändern: Index-Zuweisung, Slicing, append(), insert(), extend() und List Comprehension mit klaren Beispielen erklärt.
Python-Listen sind veränderlich (mutable), das heißt, ihr Inhalt kann nach der Erstellung geändert werden. Dieses Kapitel behandelt alle praktischen Techniken zur Änderung von Listenelementen: direkte Index-Zuweisung, Slice-Ersetzung, append(), insert(), extend() und List Comprehension. Zu verstehen, wann welcher Ansatz sinnvoll ist, ist entscheidend für sauberen und effizienten Python-Code.
Ein einzelnes Element per Index ändern
Der direkteste Weg, ein einzelnes Element zu ändern, besteht darin, seinem Index eine neue Wert zuzuweisen. Listenindizes beginnen bei 0.
fruits = ["apple", "banana", "cherry"]
fruits[1] = "mango"
print(fruits)Ausgabe:
['apple', 'mango', 'cherry']Negativer Index zählt vom Ende der Liste. Index -1 ist das letzte Element, -2 das vorletzte usw.
colors = ["red", "green", "blue"]
colors[-1] = "yellow"
print(colors)Ausgabe:
['red', 'green', 'yellow']Wenn Sie versuchen, einem nicht vorhandenen Index zuzuweisen, wirft Python einen IndexError. Verwenden Sie Listenzugriffsmuster oder len(), um im gültigen Bereich zu bleiben.
Einen Bereich von Elementen mit Slicing ersetzen
Slice-Zuweisung ersetzt einen zusammenhängenden Abschnitt einer Liste durch eine andere Liste. Das Slice my_list[start:end] wählt Elemente vom Index start bis (ausschließlich) Index end aus.
Ausgabe:
[1, 20, 30, 5]Beachten Sie, dass die Ersetzungsliste nicht die gleiche Länge wie das Slice haben muss. Hier wurden drei Elemente (2, 3, 4) durch zwei Elemente (20, 30) ersetzt, wodurch die Liste um eins kürzer wurde.
Sie können auch Elemente einfügen, ohne welche zu entfernen, indem Sie ein leeres Slice verwenden:
letters = ["a", "b", "e"]
letters[2:2] = ["c", "d"]
print(letters)Ausgabe:
['a', 'b', 'c', 'd', 'e']append() — ein Element ans Ende hinzufügen
Die Methode append() fügt ein einzelnes Element ans Ende einer Liste hinzu und verändert die Liste direkt (in place). Sie fügt immer genau ein Element hinzu, auch wenn dieses Element selbst eine Liste ist.
Ausgabe:
[1, 2, 3, 4, 5]Das Anhängen einer Liste als einzelnes Element verschachtelt sie, anstatt sie zusammenzuführen:
my_list = [1, 2, 3]
my_list.append([4, 5])
print(my_list)Ausgabe:
[1, 2, 3, [4, 5]]Verwenden Sie stattdessen extend(), wenn Sie alle Elemente einer anderen Liste zusammenführen möchten.
insert() — ein Element an einer bestimmten Position einfügen
Die Methode insert() platziert ein neues Element an einem bestimmten Index und verschiebt alle nachfolgenden Elemente um eine Position nach rechts.
Ausgabe:
[1, 2, 99, 3, 4]insert() wirft bei Positionen außerhalb des gültigen Bereichs keinen IndexError. Wenn Sie einen Index übergeben, der größer als die Listenlänge ist, wird das Element am Ende eingefügt. Wenn Sie einen negativen Index übergeben, der über den Anfang hinausgeht, wird es am Anfang eingefügt.
extend() — ein weiteres Iterable in die Liste einfügen
Die Methode extend() hängt jedes Element aus einem Iterable (Liste, Tupel, string usw.) ans Ende der Liste an. Die ursprüngliche Liste wächst direkt (in place).
Ausgabe:
[1, 2, 3, 4, 5, 6, 7]extend() vs. append() auf einen Blick:
| Methode | Was wird hinzugefügt | Ergebnis für [1,2] + [3,4] |
|---|---|---|
append([3,4]) | Ein Element (eine verschachtelte Liste) | [1, 2, [3, 4]] |
extend([3,4]) | Jedes Element einzeln | [1, 2, 3, 4] |
List Comprehension — Elemente mit einer neuen Liste transformieren
List Comprehension erstellt eine neue Liste, indem ein Ausdruck auf jedes Element angewendet wird (mit optionalem Filter). Nach der Comprehension wird die Variable neu zugewiesen – die ursprüngliche Liste wird nicht direkt verändert.
Ausgabe:
[4, 8, 12]Sie können auch alle Elemente ohne Filterung transformieren:
prices = [10.0, 25.5, 8.75]
discounted = [round(p * 0.9, 2) for p in prices]
print(discounted)Ausgabe:
[9.0, 22.95, 7.88]Verwenden Sie List Comprehension, wenn Sie eine saubere, lesbare Einzeiler-Lösung benötigen, um eine modifizierte Kopie einer Liste zu erstellen.
Den richtigen Ansatz wählen
| Ziel | Beste Methode |
|---|---|
| Ein Element an einer bekannten Position ändern | Index-Zuweisung list[i] = value |
| Einen Bereich von Elementen ersetzen | Slice-Zuweisung list[a:b] = new_items |
| Ein Element ans Ende hinzufügen | append() |
| Ein Element an einer bestimmten Position einfügen | insert(index, value) |
| Alle Elemente aus einem anderen Iterable zusammenführen | extend() |
| Eine modifizierte Kopie nach einer Regel erstellen | List Comprehension |
Informationen zum Entfernen von Elementen aus einer Liste finden Sie unter Listenelemente entfernen. Zum Sortieren einer Liste an Ort und Stelle siehe Listen sortieren. Eine vollständige Referenz aller Listenmethoden finden Sie unter Listenmethoden.