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 dersorted()
-Funktion - Code-Beispiele für das Sortieren von Listen in aufsteigender und absteigender Reihenfolge
- Anpassen der Sortierung mit dem Parameter
key
- Unterschied zwischen
sort()
undsorted()
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
istFalse
und die Liste wird in aufsteigender Reihenfolge sortiert. Geben SieTrue
an, um die Liste in absteigender Reihenfolge zu sortieren. key
ist ebenfalls ein optionaler Parameter, der aufgesetzt 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. ✨
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
undkey
sind optionale Parameter
Hinweis: Im Gegensatz zur
sort()
-Methode, die nur auf Listen wirkt, kann diesort()
-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() Methode | Python sort() Funktion |
Sortiert die Liste an Ort und Stelle – verändert die ursprüngliche Liste | Gibt eine neue sortierte Liste zurück |
Funktioniert nur mit Python-Listen | Funktioniert mit Python Iterables wie Listen, Strings und anderen Sammlungen |
Hat den Rückgabetyp None | Gibt 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.