Python sort list: elemente in-place sortieren
Python sort list ordnet eine Liste in-place nach der Standardreihenfolge oder einem benutzerdefinierten Schlüssel. Nutze es, wenn die Liste so umsortiert werden muss, dass sie zu deiner Logik für spätere Nutzung passt. Wichtig! In-place-Sortierung aktualisiert die Originalliste, statt eine neue zu erstellen.
Python Sort List-Beispiel Für In-Place-Ordnung
Ausgabe:
Die Ausgabe erscheint hier...
Ausgabe:
['Ana', 'Mia', 'Zoe']
So Funktioniert Dieses Beispiel
namesstartet in einer unsortierten Reihenfolge, die dem Eingang der Daten entspricht.names.sort()ordnet dieselbe Liste in-place, sodass alle späteren Verwendungen die neue Reihenfolge sehen.- Die Ausgabe zeigt die Liste jetzt alphabetisch sortiert.
Häufige Fehler
Fehler 1: Erwarten, dass sort() eine neue Liste zurückgibt.
scores = [88, 92, 75]
new_scores = scores.sort()
print(new_scores)
scores = [88, 92, 75]
scores.sort()
print(scores)
Warum das passiert: list.sort() gibt immer None zurück, weil es die vorhandene Liste mutiert.
Fehler 2: Gemischte Typen in Python 3 sortieren.
items = [3, "10", 2]
items.sort()
items = ["3", "10", "2"]
items.sort(key=int)
print(items)
Warum das passiert: Zahlen und Strings sind nicht direkt vergleichbar, daher musst du Typen normalisieren oder einen Key angeben.
Fehler 3: Vergessen, dass String-Sortierung case-sensitiv ist.
names = ["ana", "Mia", "zoe"]
names.sort()
print(names)
names = ["ana", "Mia", "zoe"]
names.sort(key=str.lower)
print(names)
Warum das passiert: Großbuchstaben werden standardmäßig vor Kleinbuchstaben sortiert, was für Namen ungeordnet wirken kann.
sort list vs sorted: was nutzen?
Nutze list.sort(), wenn… | Nutze sorted(), wenn… |
|---|---|
| Du bereits eine Liste hast und sie in-place umsortieren willst. | Du eine neue Liste brauchst und die Originalreihenfolge behalten willst. |
| Du die speichereffizienteste Option willst. | Du irgendein Iterable sortierst, nicht nur eine Liste. |
Es okay ist, dass die Methode None zurückgibt. | Du die sortierten Daten als neuen Wert möchtest. |
Faustregel: Nutze list.sort(), wenn sich dieselbe Liste ändern soll; nutze sorted(), wenn du ein getrenntes sortiertes Ergebnis brauchst.
Performance-Überlegungen
list.sort() ist speicherschonend, weil es die bestehende Liste umsortiert, statt eine neue zu allozieren. Wenn du die Originalreihenfolge nicht brauchst, ist es meist die schnellste und speichereffizienteste Option. Die key-Funktion wird pro Element einmal aufgerufen, also halte sie für große Listen einfach. Wenn du die Originalliste behalten musst, tauscht sorted() zusätzlichen Speicher gegen diese Sicherheit.
Weitere Muster Für Das Sortieren Von Listen
Nach einem abgeleiteten Schlüssel sortieren, z. B. der Länge.
labels = ["Kiste", "Container", "Korb"]
labels.sort(key=len)
print(labels)
Das ist nützlich, wenn die Anzeige-Regel nicht alphabetisch ist und du eine klare Ordnung nach Größe willst. Es hält die Liste an Ort und Stelle und wendet eine benutzerdefinierte Regel an.
Absteigend für Ranglisten sortieren.
scores = [88, 92, 75]
scores.sort(reverse=True)
print(scores)
Absteigende Reihenfolge ist für Top-N-Anzeigen üblich, und reverse=True hält den Code einfach.
Die Liste ist weiterhin in-place sortiert, nur in die entgegengesetzte Richtung.
Wann du Python sort list verwenden solltest
- Eine Liste umordnen, die danach an mehreren Stellen wiederverwendet wird.
- Den Speicherverbrauch niedrig halten, indem du keine zweite Liste erzeugst.
- Eine
key-Funktion anwenden, wenn die natürliche Reihenfolge nicht passt. - Vermeide es, wenn du die ursprüngliche Reihenfolge erhalten musst; nutze
sorted()oder kopiere die Liste zuerst. - Vermeide es für Nicht-Listen-Iterables, außer du konvertierst sie explizit in eine Liste.