So sortieren Sie Listen in Python

In 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 Funktion sorted()
  • Codebeispiele zum Sortieren von Listen in aufsteigender und absteigender Reihenfolge
  • Passen Sie die Sortierung mit dem Schlüsselparameter an
  • Unterschied zwischen sort() und sorted()

Fangen wir an!👩🏽‍💻

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.

  • ist ein beliebiges gültiges Python-Listenobjekt.
  • reverse ist ein optionaler Parameter, der entweder True oder False akzeptiert.
  • 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 auch ein optionaler Parameter, der auf gesetzt ist.
  • 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 Listennummern. 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 Listennummern wurden in aufsteigender Reihenfolge sortiert und die ursprüngliche Liste 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 Sie 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 Schlüsselparameter 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 Schlüssel 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 Schlüssel mod5 anpassen.

  • 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 verwenden Lambda-Funktionen. In Python sind Lambdas einzeilige anonyme Funktionen. Lambda-Argumente: Ausdruck gibt den Ausdruck zurück, der anhand der Argumente 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 Sie 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 Schlüsselparameters an.

Betrachten Sie die folgende Liste, Häuser.

houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

Häuser 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 Schlüsselparameter 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 Schlüsselparameter 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.

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

Hinweis: Anders als die sort()-Methode, die nur auf Listen wirkt, kann die sorted()-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 Sie 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 Schlüsselparameter anpassen. Stellen Sie den Schlüssel 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()-MethodePython sorted()-FunktionSortiert die Liste an Ort und Stelle – ändert die ursprüngliche ListeGibt eine neue sortierte Liste zurückFunktioniert nur mit Python-ListenFunktioniert mit Python-Iterables wie Listen, Strings und anderen SammlungenHat den Rückgabetyp NoneGibt eine sortierte Kopie des Iterablen zurück

Fazit 👩‍🏫

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 = ) mit den optionalen reverse- und key-Parametern, 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.

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 wdzwdz Online Python Compiler ausprobieren.

  10 nervige Probleme, die Sie mit Smarthome-Geräten lösen können