In diesem Artikel erfahren Sie, wie Sie eine Liste in Python sortieren können.

In Python können Sie die Methode sort() verwenden, um eine Liste an Ort und Stelle zu sortieren. Oder Sie können die eingebaute Funktion sorted() verwenden, um eine sortierte Kopie der Liste zu erhalten.

In diesem Lernprogramm lernen Sie:

  • Syntax der sort() -Methode und der sorted() -Funktion
  • Code-Beispiele für das Sortieren von Listen in aufsteigender und absteigender Reihenfolge
  • Anpassen der Sortierung mit dem Parameter key
  • Unterschied zwischen sort() und sorted()

Lassen Sie uns beginnen!👩🏽‍💻

Syntax der Python sort()-Methode

Die sort() -Methode wirkt auf eine Python-Liste. Und sie sortiert die Liste an Ort und Stelle und verändert die ursprüngliche Liste.

Die Syntax für die sort() -Methode von Python lautet:

.sort(reverse = True | False, key = )

Lassen Sie uns nun die obige Syntax analysieren.

  • ist ein beliebiges gültiges Python-Listenobjekt.
  • reverse ist ein optionaler Parameter, der entweder True oder False annehmen kann.
  • Der Standardwert von reverse ist False und die Liste wird in aufsteigender Reihenfolge sortiert. Geben Sie True an, um die Liste in absteigender Reihenfolge zu sortieren.
  • key ist ebenfalls ein optionaler Parameter, der auf gesetzt wird.
  • kann eine integrierte Funktion oder eine benutzerdefinierte Funktion sein.

Im nächsten Abschnitt werden Sie mit der Programmierung einfacher Beispiele beginnen.

Wie man eine Python-Liste aufsteigend sortiert

Betrachten Sie die Liste nums. Um die Liste in aufsteigender Reihenfolge zu sortieren, können Sie die Methode sort() für die Liste aufrufen.

führen Sie den folgenden Codeschnipsel aus.

nums = [25,13,6,17,9]
nums.sort()
print(nums)

# Ausgabe: [6, 9, 13, 17, 25]

Die Liste nums wurde in aufsteigender Reihenfolge sortiert und die ursprüngliche Liste wurde geändert. Dies wird als In-Place-Sortierung bezeichnet.

So sortieren Sie eine Python-Liste in absteigender Reihenfolge

Um die Liste in absteigender Reihenfolge zu sortieren, setzen Sie reverse auf True, wie unten gezeigt.

nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Ausgabe: [25, 17, 13, 9, 6]

Sie sehen, dass die Liste jetzt in absteigender Reihenfolge sortiert ist.

Verwendung von key mit der Python-Methode sort()

In diesem Abschnitt verwenden wir den Parameter key und passen die Sortierung an.

Hier ist mod5() eine Funktion, die eine Zahl x annimmt und den Rest zurückgibt, wenn die Zahl x durch 5 geteilt wird.

def mod5(x):
  return x % 5 

Und wir möchten die obige Funktion als Schlüssel verwenden.

Führen Sie nun die folgende Codezelle aus.

nums = [25,13,6,17,9]
nums.sort(schlüssel = mod5)
print(nums)

# Ausgabe: [25, 6, 17, 13, 9]

Nehmen Sie sich eine Minute Zeit, um die Ausgabe zu analysieren.

Beachten Sie, dass Sie anstelle der regulären Sortierung Ihre Sortierung jetzt nach dem Schlüssel mod5 anpassen.

  • Die Zahl, die bei der Division durch 5 den kleinsten Rest ergibt, steht nun an erster Stelle.
  • Und die Zahl, die bei der Division durch 5 den größten Rest übrig lässt, ist das letzte Element in der sortierten Liste.

Um zu überprüfen, ob dies der Fall ist, führen Sie den folgenden Codeschnipsel aus.

nums = [25,13,6,17,9]

for num in nums:
  print(f"{num} ergibt Rest {num%5} bei Division durch 5")

# Ausgabe
25 ergibt bei der Division durch 5 einen Rest von 0
13 ergibt Rest 3, wenn durch 5 geteilt
6 Blätter Rest 1 bei Teilung durch 5
17 Blätter Rest 2 bei Teilung durch 5
9 Blätter Rest 4 bei Teilung durch 5

5 teilt 25 genau, und der Rest ist 0. Das ist also das erste Element in der sortierten Liste. 6 hinterlässt einen Rest von 1, ist also das zweite Element und so weiter. 9 hinterlässt bei der Division durch 5 den Rest 4 und ist das letzte Element in der sortierten Liste.

Anstatt eine eigene Funktion zu definieren, können Sie auch Lambda-Funktionen verwenden. In Python sind Lambdas einzeilige anonyme Funktionen. lambda args : expression gibt den auf den args berechneten Ausdruck zurück.

Lassen Sie uns nun die obige Sortierung unter Verwendung des Lambda-Ausdrucks umschreiben, wie unten gezeigt.

nums = [25,13,6,17,9]
nums.sort(schlüssel = lambda x:x%5)
print(nums)

# Ausgabe: [25, 6, 17, 13, 9]

Bis jetzt haben Sie gelernt, wie man eine Liste von Zahlen sortiert. Sehen wir uns nun an, wie Sie eine Liste von Strings in Python sortieren können.

Wie man eine Python-Liste in alphabetischer Reihenfolge sortiert

In diesem Abschnitt lernen Sie, wie Sie eine Liste von Zeichenketten sortieren können – mit Beispielen, die von Harry Potter inspiriert sind. ✨

python-sort-list

In unserem Beispiel ist students eine Liste von Schülern in Hogwarts. Und wir möchten sie in der alphabetischen Reihenfolge ihrer Namen sortieren.

Wenn Sie eine Liste von Zeichenketten sortieren, ist die Standardsortierung alphabetisch.

students = ["Harry", "Ron", "Hermine", "Draco", "Cedric"]

Lassen Sie uns die sortierte Liste ausdrucken, um das Ergebnis der Sortierung zu überprüfen.

students.sort()
print(students)

# Ausgabe
['Cedric','Draco', 'Harry', 'Hermine', 'Ron']

So sortieren Sie die Python-Liste in umgekehrter alphabetischer Reihenfolge

Um die Liste in umgekehrter alphabetischer Reihenfolge zu sortieren, setzen Sie reverse = True, wie im folgenden Codeschnipsel gezeigt.

students.sort(reverse = True)
print(students)

# Ausgabe
['Ron', 'Hermine', 'Harry', 'Draco', 'Cedric']

Anhand der Ausgabe können Sie sehen, dass die Liste tatsächlich in umgekehrter Reihenfolge sortiert wurde.

Verwendung des Schlüsselparameters Sortierung anpassen

In diesem Abschnitt werden wir die Sortierung mithilfe des optionalen Parameters key anpassen.

Betrachten Sie die folgende Liste, Häuser.

häuser = [
            {1: "Draco", "Haus": "Slytherin"},
            {2: "Harry", "Haus": "Gryffindor"},
            {3: "Cedric", "Haus": "Hufflepuff"}
         ]

Hier ist ” Häuser ” eine Liste von Wörterbüchern. Jedes Wörterbuch enthält zwei Schlüssel-Wert-Paare, von denen eines die Namen der Schüler und das andere das Haus angibt, zu dem sie gehören.

Nun möchten wir diese Liste in der alphabetischen Reihenfolge der Häuser sortieren, zu denen sie gehören.

Wie Sie vielleicht schon erraten haben, sollten wir den Parameter key auf das Haus der jeweiligen Schüler setzen.

Um das Haus eines jeden Schülers abzurufen, können Sie eine Funktion returnHouse() definieren, wie unten gezeigt.

def returnHouse(student):
  return student['Haus']

Diese Funktion gibt das Haus zurück, zu dem der jeweilige Schüler gehört.

Nun können Sie die Methode sort() für die Liste der Häuser aufrufen, wie gezeigt.

häuser.sort(Schlüssel=RückgabeHaus)

In der folgenden Ausgabe sehen Sie, dass die Liste nach dem Haus und nicht nach den Namen der Schüler sortiert ist. Deshalb haben wir Gryffindor, Hufflepuff und Slytherin – in alphabetischer Reihenfolge.

print(Häuser)

# Ausgabe
[{2: 'Harry', 'Haus': 'Gryffindor'}, 
{3: 'Cedric', 'Haus': 'Hufflepuff'}, 
{1: 'Draco', 'Haus': 'Slytherin'}]

Um den Schlüsselparameter entsprechend zu definieren, können Sie auch eine Lambda-Funktion verwenden. Für jedes Listenelement gibt diese Funktion das Haus für dieses Listenelement zurück.

▶ Führen Sie die folgende Codezelle aus, um dies zu überprüfen.

häuser.sort(schlüssel=lambda student:student["haus"])
print(Häuser)

# Ausgabe
[{2: 'Harry', 'Haus': 'Gryffindor'}, 
{3: 'Cedric', 'Haus': 'Hufflepuff'}, 
{1: 'Draco', 'Haus': 'Slytherin'}]

In allen bisherigen Beispielen haben Sie die Methode sort() auf eine Liste angewendet. Und Sie wissen jetzt, dass sie die ursprüngliche Liste verändert.

Was aber, wenn Sie die ursprüngliche Liste beibehalten möchten, aber eine sortierte Kopie der Liste erhalten wollen?

Nun, in Python können Sie dazu die Funktion sorted() verwenden.

Syntax der Python sort()-Funktion

Die Funktion sorted() nimmt eine Liste oder eine beliebige Sammlung als Argument entgegen. Und sie gibt eine sortierte Kopie der Liste zurück – die ursprüngliche Liste wird nicht verändert.

Die Syntax für die sortierte() -Funktion von Python lautet:

 = sorted(, reverse = True | False, key = )

Beachten Sie, dass die Syntax der sort() -Methode, die wir bereits gesehen haben, sehr ähnlich ist.

  • ist ein beliebiges gültiges Python-Listenobjekt und ist ein erforderlicher Parameter.
  • reverse und key sind optionale Parameter

Hinweis: Im Gegensatz zur sort() -Methode, die nur auf Listen wirkt, kann die sort() -Funktion zum Sortieren jeder beliebigen Python-Iterable verwendet werden, z.B. Listen, Strings und Dictionaries.

So sortieren Sie eine Python-Liste mit der Funktion sorted()

#1. In diesem Beispiel ist nums eine Liste von Zahlen.

Sie können die Funktion sorted() mit nums als Argument aufrufen. Und weisen Sie sie der Liste sorted_nums1 zu.

nums = [25,13,6,17,9]
sortierte_Zahlen1 = sortiert(Ziffern)
print(sortierte_Zahlen1)

# Ausgabe: [6, 9, 13, 17, 25]

In der obigen Ausgabe können Sie sehen, dass Ziffern standardmäßig in aufsteigender Reihenfolge sortiert wurde.

Beachten Sie auch, dass die ursprüngliche Liste nums nicht verändert wird, da sorted() eine neue Liste zurückgibt. Dies wird im Folgenden überprüft.

print(nums)
 # Ausgabe: [25, 13, 6, 17, 9]

#2. Setzen Sie nun den optionalen Parameter reverse auf True und erhalten Sie sorted_nums2.

Wie in der nachstehenden Codezelle gezeigt, ist sorted_nums2 eine neue Liste, in der die Elemente in absteigender Reihenfolge sortiert sind.

sortierte_Zahlen2 = sortiert(Summen,reverse = True)
print(sortierte_Zahlen2)

# Ausgabe: [25, 17, 13, 9, 6]

#3. In diesem Beispiel wollen wir mit einer Liste von Strings arbeiten.

Wie bei den vorherigen Beispielen gibt der Aufruf der Funktion sorted() eine neue Liste zurück. Und die Einträge werden in alphabetischer Reihenfolge sortiert.

fruits = ['Birnen','Erdbeeren','Äpfel','Ananas','Heidelbeeren']
sortiert_fr1 = sortiert(Früchte)
print(sortiert_fr1)

# Ausgabe:
['Apfel', 'Heidelbeere', 'Birne', 'Ananas', 'Erdbeere']

#4. Lassen Sie uns nun die Sortierung mit Hilfe des optionalen Parameters key anpassen. Setzen Sie den Schlüssel auf len. Dadurch wird die Liste nach der Länge der Zeichenketten sortiert.

Hinweis: In Python nimmt die eingebaute Funktion len() jede beliebige Iterable auf, z.B. Listen, Strings, Tupel und so weiter. Und sie gibt die Länge der Iterablen zurück.

Die Zeichenkette mit der kürzesten Länge erscheint zuerst in der sortierten Liste und die längste Zeichenkette erscheint am Ende der sortierten Liste.

fruits = ['Birne','Erdbeere','Apfel','Ananas','Heidelbeere']
sortiert_fr2 = sortiert(Früchte,Schlüssel=len)
print(sortiert_fr2)

# Ausgabe:
['Birne', 'Apfel', 'Ananas', 'Heidelbeere', 'Erdbeere']

In der obigen Ausgabe ist ‘Birne die kürzeste Zeichenkette und ‘Erdbeere’ ist die längste Zeichenkette.

Lesen Sie auch, wie Sie eine Liste in Python umkehren können , um sie rückwärts zu spinnen.

Python sort()-Methode vs. sort()-Funktion

Bisher haben Sie gelernt, wie Sie sowohl die sort() -Methode als auch die sort() -Funktion verwenden können. In diesem Abschnitt wollen wir die Unterschiede zwischen diesen beiden Methoden aufzählen.

Python .sort() MethodePython sort() Funktion
Sortiert die Liste an Ort und Stelle – verändert die ursprüngliche ListeGibt eine neue sortierte Liste zurück
Funktioniert nur mit Python-ListenFunktioniert mit Python Iterables wie Listen, Strings und anderen Sammlungen
Hat den Rückgabetyp NoneGibt eine sortierte Kopie der Iterablen zurück

Zusammenfassend 👩‍🏫

Ich hoffe, Sie haben dieses Python-Listen-Tutorial hilfreich gefunden.

Lassen Sie uns kurz zusammenfassen, was wir behandelt haben.

  • Verwenden Sie list.sort(reverse = True | False, key = ) mit den optionalen Parametern reverse und key, um eine Liste an Ort und Stelle zu sortieren.
  • Verwenden Sie sorted(list, reverse = True | False, key = ) , um eine sortierte Kopie der Liste zu erhalten.

Jetzt, wo Sie gelernt haben, wie man Python-Listen sortiert, lernen Sie mehr über das Listenverständnis in Python. Sie könnten auch lernen, wie man in Python mit Dateien umgeht oder mit JSON-Dateien arbeitet.

Sie können die oben genannten Beispiele im Geekflare Online Python Compiler ausprobieren.