8.1 Sortieren einer Liste
Das Sortieren von Listen in Python ist eine wichtige Operation, die es ermöglicht, Daten zur Analyse oder Darstellung zu organisieren. Python bietet mehrere Möglichkeiten, Listen zu sortieren, wobei jede je nach Aufgabe und Anforderungen nützlich sein kann.
Methode sort()
Die Methode sort() sortiert die Liste in-place, d.h. sie ändert die ursprüngliche Liste. Sie ist sehr effizient und erlaubt es, die Sortierung durch Argumente anzupassen.
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers) # Gibt [1, 2, 5, 9] aus
Du kannst die Liste in umgekehrter Reihenfolge sortieren, indem du den Parameter reverse=True setzt.
numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers) # Gibt [9, 5, 2, 1] aus
Funktion sorted()
Die Funktion sorted() erstellt eine neue Liste, die eine sortierte Version des Originals darstellt. Die ursprüngliche Liste wird dabei nicht verändert, was sorted() oft zur bevorzugten Wahl macht, wenn der ursprüngliche Datensatz unverändert bleiben soll.
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Gibt [1, 2, 5, 9] aus
print(numbers) # Ursprüngliche Liste bleibt unverändert [5, 2, 9, 1]
Es ist wichtig zu wissen, dass sort() die Original-Liste verändert, während sorted() eine neue sortierte Liste zurückgibt und das Original unverändert lässt. Verwende sort(), wenn du die Daten direkt ändern musst, und sorted(), wenn du die ursprüngliche Reihenfolge der Daten bewahren möchtest.
8.2 Sortieren nach Schlüssel
Manchmal benötigt man komplexere Sortierszenarien oder eine Sortierung, die bestimmte Parameter ignoriert. In diesem Fall hilft uns das „Sortieren nach Schlüssel“. Um es zu benutzen, muss man der Methode sort() oder der Funktion sorted() einen speziellen Parameter — key — übergeben.
Als Wert für den Parameter key muss eine Funktion übergeben werden, die bei der Vergleich von Elementen verwendet wird.
Vergleich von Strings ohne Berücksichtigung der Groß-/Kleinschreibung
Vor dem Vergleich werden alle Strings in Kleinbuchstaben umgewandelt
alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist) # Gibt ['banana', 'cherry', 'Kiwi', 'Orange'] aus
Beispiel für die Sortierung einer Liste von Tupeln
Angenommen, du hast eine Liste von Studenten, wobei jedes Element ein (tuple) ist, das den Namen des Studenten und seine Note enthält. Du möchtest die Studenten nach ihren Noten sortieren:
students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]
def get_grade(student):
return student[1]
students.sort(key=get_grade)
print(students) # Gibt [('Bob', 75), ('Alice', 88), ('Carol', 96)] aus
Beispiel für die Sortierung einer Liste von Dictionaries
Oder, du hast eine Liste von Dictionaries, wobei jedes Dictionary Informationen über Studenten enthält. Um sie nach ihren Noten zu sortieren, musst du einen Code von diesem Typ schreiben:
students = [
{'name': 'Alice', 'grade': 88},
{'name': 'Bob', 'grade': 75},
{'name': 'Carol', 'grade': 96}
]
def get_grade(student):
return student['grade']
sorted_students = sorted(students, key=get_grade)
print(sorted_students) # Gibt [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}] aus
GO TO FULL VERSION