So sortieren Sie Listen in Python
Veröffentlicht: 2022-03-30In diesem Artikel erfahren Sie, wie Sie eine Liste in Python sortieren.
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 Tutorial lernen Sie:
- Syntax der Methode
sort()
und der Funktionsorted()
- Codebeispiele zum Sortieren von Listen in aufsteigender und absteigender Reihenfolge
- Passen Sie die Sortierung mit dem
key
an - Unterschied zwischen
sort()
undsorted()
Lasst uns beginnen!
Syntax der Python-Methode sort()
Die Methode sort()
wirkt auf eine Python-Liste. Und es sortiert die Liste an Ort und Stelle – und modifiziert die ursprüngliche Liste.
Die Syntax für die sort()
Methode von Python lautet:
<list>.sort(reverse = True | False, key = <func>)
Analysieren wir nun die obige Syntax.
-
<list>
ist ein beliebiges gültiges Python-Listenobjekt. -
reverse
ist ein optionaler Parameter, der entweder True oder False akzeptiert. - 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 auch ein optionaler Parameter, der auf<func>
gesetzt ist. -
<func>
kann eine eingebaute Funktion oder eine benutzerdefinierte Funktion sein.
Im nächsten Abschnitt beginnen Sie mit dem Codieren einfacher Beispiele.
So sortieren Sie die Python-Liste in aufsteigender Reihenfolge
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 das folgende Code-Snippet aus.
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
Die nums
wurden in aufsteigender Reihenfolge sortiert, und die ursprüngliche Liste wurde geändert. Dies wird als In-Place-Sortierung bezeichnet.
So sortieren Sie die Python-Liste in absteigender Reihenfolge
Um die Liste in absteigender Reihenfolge zu sortieren, setzen reverse
auf True
, wie unten gezeigt.
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
Sie können sehen, dass die Liste jetzt in absteigender Reihenfolge sortiert ist.
So verwenden Sie den Schlüssel mit der Python-Methode sort()
In diesem Abschnitt verwenden wir den key
und passen die Sortierung an.
Hier ist mod5()
eine Funktion, die eine Zahl x
aufnimmt 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 key
verwenden.
Führen Sie nun die folgende Codezelle aus.
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [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 jetzt Ihre Sortierung gemäß dem key
anpassen, der mod5
.
- Die Zahl, die bei der Division durch 5 den kleinsten Rest übrig lässt, steht jetzt an erster Stelle.
- Und die Zahl, die bei Division durch 5 den größten Rest übrig lässt, ist das letzte Element in der sortierten Liste.
Um dies zu überprüfen, führen Sie das folgende Code-Snippet aus.
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5 teilt 25 genau, und der Rest ist 0. Das ist also das erste Element in der sortierten Liste. 6 lässt einen Rest 1, also ist es das zweite Element und so weiter. 9 lässt den Rest 4 übrig, wenn es durch 5 geteilt wird, und es ist das letzte Element in der sortierten Liste.
Anstatt eine separate Funktion zu definieren, können Sie auch Lambda-Funktionen verwenden. In Python sind Lambdas einzeilige anonyme Funktionen. Lambda args : expression gibt den Ausdruck zurück, der für args berechnet wurde.
Lassen Sie uns nun die obige Sortierung mit dem Lambda-Ausdruck umschreiben, wie unten gezeigt.
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
Bisher haben Sie gelernt, wie man eine Liste mit Zahlen sortiert. Als Nächstes sehen wir uns an, wie Sie eine Liste von Zeichenfolgen in Python sortieren können.
So sortieren Sie die Python-Liste in alphabetischer Reihenfolge
In diesem Abschnitt lernen Sie, eine Liste von Strings zu sortieren – mit von Harry Potter inspirierten Beispielen.
In unserem Beispiel ist students
eine Liste von Schülern in Hogwarts. Und wir möchten sie in der alphabetischen Reihenfolge ihrer Namen sortieren.
Beim Sortieren einer Liste von Zeichenfolgen erfolgt die Sortierung standardmäßig in alphabetischer Reihenfolge.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
Lassen Sie uns die sortierte Liste ausdrucken, um das Ergebnis der Sortierung zu überprüfen.
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
So sortieren Sie die Python-Liste in umgekehrter alphabetischer Reihenfolge
Um die Liste in umgekehrter alphabetischer Reihenfolge zu sortieren, setzen reverse
= True
, wie im folgenden Code-Snippet gezeigt.
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
An der Ausgabe können Sie erkennen, dass die Liste tatsächlich in umgekehrter Reihenfolge sortiert wurde.
Verwendung von Schlüsselparametern Sortierung anpassen
In diesem Abschnitt passen wir die Sortierung mithilfe des optionalen key
an.
Betrachten Sie die folgende Liste, houses
.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
houses
ist hier 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 bezeichnet, zu dem sie gehören.
Nun möchten wir diese Listenhäuser in der alphabetischen Reihenfolge der Häuser , zu denen sie gehören, sortieren.
Wie Sie vielleicht schon erraten haben, sollten wir den key
auf das Haus der jeweiligen Schüler setzen.
Um das Haus jedes Schülers abzurufen, können Sie eine Funktion returnHouse()
definieren, wie unten gezeigt.
def returnHouse(student): return student['house']
Diese Funktion gibt das Haus zurück, zu dem der jeweilige Student gehört.
Jetzt können Sie die sort()
Methode für die Häuserliste aufrufen, wie gezeigt.
houses.sort(key=returnHouse)
Beachten Sie in der Ausgabe unten, wie 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(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Um den key
entsprechend zu definieren, könnten Sie auch eine Lambda-Funktion verwenden. Für jeden Listeneintrag gibt diese Funktion das Haus für diesen Listeneintrag zurück.
Führen Sie die folgende Codezelle aus, um dies zu überprüfen.
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
In allen bisherigen Beispielen haben Sie die Methode sort()
auf eine Liste angewendet. Und Sie wissen jetzt, dass die ursprüngliche Liste geändert wird.
Was ist, wenn Sie die ursprüngliche Liste unverändert beibehalten, aber eine sortierte Kopie der Liste erhalten möchten?
In Python können Sie dazu die Funktion sorted()
verwenden.
Syntax der Python-Funktion sorted()
Die Funktion sorted()
nimmt eine Liste oder eine beliebige Sammlung als Argument entgegen. Und es gibt eine sortierte Kopie der Liste zurück – und die ursprüngliche Liste wird nicht geändert.
Die Syntax für die Funktion sorted()
von Python lautet:
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
Beachten Sie, dass die Syntax der zuvor gesehenen Methode sort()
sehr ähnlich ist.
-
<list>
ist ein beliebiges gültiges Python-Listenobjekt und ein erforderlicher Parameter. -
reverse
undkey
sind optionale Parameter
Hinweis : Im Gegensatz zur
sort()
Methode, die nur auf Listen wirkt, kann diesorted()
Funktion verwendet werden, um alle iterierbaren Python-Objekte wie Listen, Strings und Wörterbücher zu sortieren.
So sortieren Sie die 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 es der Liste sorted_nums1
zu.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
In der obigen Ausgabe sehen Sie, dass nums
standardmäßig in aufsteigender Reihenfolge sortiert wurde.
Beachten Sie auch, dass die ursprüngliche Liste nums
nicht geändert wird, da sorted()
eine neue Liste zurückgibt. Dies wird unten verifiziert.
print(nums) # Output: [25, 13, 6, 17, 9]
#2 . Setzen Sie nun den optionalen Parameter reverse
auf True
und erhalten sorted_nums2
.
Wie in der Codezelle unten gezeigt, ist sorted_nums2
eine neue Liste, in der die Elemente in absteigender Reihenfolge sortiert sind.
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
#3. Lassen Sie uns in diesem Beispiel mit einer Liste von Zeichenfolgen arbeiten.
Wie bei den vorherigen Beispielen gibt der Aufruf der Funktion sorted()
eine neue Liste zurück. Und die Artikel sind in alphabetischer Reihenfolge sortiert.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. Lassen Sie uns nun die Sortierung mit dem optionalen key
anpassen. Stellen Sie den key
auf len
. Dadurch wird die Liste nach der Länge der Zeichenfolgen sortiert.
Hinweis: In Python nimmt die eingebaute Funktion
len()
alle Iterablen auf, wie Listen, Strings, Tupel und so weiter. Und es gibt die Länge des Iterablen zurück.
Die Zeichenfolge mit der kürzesten Länge wird zuerst in der sortierten Liste angezeigt, und die längste Zeichenfolge wird am Ende der sortierten Liste angezeigt.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
In der obigen Ausgabe ist Birne die kürzeste Zeichenfolge und Erdbeere die längste Zeichenfolge.
Python sort()-Methode vs. sorted()-Funktion
Bisher haben Sie gelernt, die Methode sort()
sowie die Funktion sorted()
zu verwenden. Lassen Sie uns in diesem Abschnitt die Unterschiede zwischen diesen beiden Methoden aufzählen.
Python .sort() Methode | Python sorted()-Funktion |
Sortiert die Liste an Ort und Stelle – ä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 des Iterable zurück |
Zusammenfassen
Ich hoffe, Sie fanden dieses Python-Listen-Tutorial hilfreich.
Lassen Sie uns kurz zusammenfassen, was wir behandelt haben.
- Verwenden Sie list.sort(reverse = True | False, key = <func>) mit den optionalen reverse- und key -Parametern, um eine Liste an Ort und Stelle zu sortieren.
- Verwenden Sie sorted(list, reverse = True | False, key = <func>) , um eine sortierte Kopie der Liste zu erhalten.
Nachdem Sie nun gelernt haben, Python-Listen zu sortieren, erfahren Sie mehr über das Listenverständnis in Python. Oder Sie können auch lernen, wie man mit Dateien umgeht oder mit JSON-Dateien in Python arbeitet.
Sie können die oben angegebenen Beispiele im Geekflare Online Python Compiler ausprobieren.