Python List sort ()

Die sort () -Methode sortiert die Elemente einer bestimmten Liste in einer bestimmten aufsteigenden oder absteigenden Reihenfolge.

Die Syntax der sort()Methode lautet:

 list.sort (key =…, reverse =…)

Alternativ können Sie für denselben Zweck auch die in Python integrierte Funktion sorted () verwenden.

 sortiert (Liste, Schlüssel =…, Umkehrung =…)

Hinweis: Der einfachste Unterschied zwischen sort()und sorted()besteht darin sort(), die Liste direkt zu sorted()ändern und keinen Wert zurückzugeben, während die Liste nicht geändert und die sortierte Liste zurückgegeben wird.

sort () Parameter

Standardmäßig sind sort()keine zusätzlichen Parameter erforderlich. Es gibt jedoch zwei optionale Parameter:

  • umgekehrt - Wenn True, wird die sortierte Liste umgekehrt (oder in absteigender Reihenfolge sortiert)
  • key - Funktion, die als Taste für den Sortiervergleich dient

Rückgabewert von sort ()

Die sort()Methode gibt keinen Wert zurück. Vielmehr wird die ursprüngliche Liste geändert.

Wenn eine Funktion die sortierte Liste zurückgeben soll, anstatt die ursprüngliche Liste zu ändern, verwenden Sie sorted().

Beispiel 1: Sortieren Sie eine bestimmte Liste

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Ausgabe

 Sortierte Liste: ('a', 'e', ​​'i', 'o', 'u')

In absteigender Reihenfolge sortieren

Die sort()Methode akzeptiert einen reverseParameter als optionales Argument.

Durch die Einstellung wird reverse = Truedie Liste in absteigender Reihenfolge sortiert.

 list.sort(reverse=True)

Alternativ sorted()können Sie den folgenden Code verwenden.

 sorted(list, reverse=True)

Beispiel 2: Sortieren Sie die Liste in absteigender Reihenfolge

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Ausgabe

 Sortierte Liste (in absteigender Reihenfolge): ('u', 'o', 'i', 'e', ​​'a')

Mit benutzerdefinierter Funktion mit der Taste sortieren

Wenn Sie eine eigene Implementierung zum Sortieren wünschen, sort()akzeptiert die Methode auch eine keyFunktion als optionalen Parameter.

Basierend auf den Ergebnissen der Tastenfunktion können Sie die angegebene Liste sortieren.

 list.sort(key=len)

Alternativ für sortiert:

 sorted(list, key=len)

Hier lenist die in Python integrierte Funktion zum Zählen der Länge eines Elements.

Die Liste wird nach der Länge jedes Elements sortiert, von der niedrigsten bis zur höchsten Anzahl.

Wir wissen, dass ein Tupel standardmäßig nach seinem ersten Parameter sortiert wird. Schauen wir uns an, wie Sie die sort()Methode so anpassen , dass sie mit dem zweiten Element sortiert wird.

Beispiel 3: Sortieren Sie die Liste mit dem Schlüssel

 # take second element for sort def takeSecond(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)

Ausgabe

 Sortierte Liste: ((4, 1), (2, 2), (1, 3), (3, 4))

Nehmen wir ein anderes Beispiel. Angenommen, wir haben eine Liste mit Informationen zu den Mitarbeitern eines Büros, in dem jedes Element ein Wörterbuch ist.

Wir können die Liste folgendermaßen sortieren:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Ausgabe

(('Name': 'Alan Turing', 'Alter': 25, 'Gehalt': 10000), ('Name': 'John Hopkins', 'Alter': 18, 'Gehalt': 1000), ('Name' ':' Mikhail Tal ',' Alter ': 40,' Gehalt ': 15000), (' Name ':' Sharon Lin ',' Alter ': 30,' Gehalt ': 8000)) ((' Name ':' John Hopkins ',' Alter ': 18,' Gehalt ': 1000), (' Name ':' Alan Turing ',' Alter ': 25,' Gehalt ': 10000), (' Name ':' Sharon Lin ', 'Alter': 30, 'Gehalt': 8000), ('Name': 'Mikhail Tal', 'Alter': 40, 'Gehalt': 15000)) (('Name': 'Mikhail Tal', 'Alter') : 40, 'Gehalt': 15000), ('Name': 'Alan Turing', 'Alter': 25, 'Gehalt': 10000), ('Name ':' Sharon Lin ',' Alter ': 30,' Gehalt ': 8000), (' Name ':' John Hopkins ',' Alter ': 18,' Gehalt ': 1000))

Hier gibt unsere benutzerdefinierte Funktion im ersten Fall den Namen jedes Mitarbeiters zurück. Da der Name a ist string, sortiert Python ihn standardmäßig in alphabetischer Reihenfolge.

Für den zweiten Fall wird age ( int) zurückgegeben und in aufsteigender Reihenfolge sortiert.

Für den dritten Fall gibt die Funktion das Gehalt ( int) zurück und wird in absteigender Reihenfolge mit sortiert reverse = True.

Es wird empfohlen, die Lambda-Funktion zu verwenden, wenn die Funktion in einer Zeile zusammengefasst werden kann. Wir können das obige Programm also auch wie folgt schreiben:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Ausgabe

(('Name': 'Alan Turing', 'Alter': 25, 'Gehalt': 10000), ('Name': 'John Hopkins', 'Alter': 18, 'Gehalt': 1000), ('Name' ':' Mikhail Tal ',' Alter ': 40,' Gehalt ': 15000), (' Name ':' Sharon Lin ',' Alter ': 30,' Gehalt ': 8000)) ((' Name ':' John Hopkins ',' Alter ': 18,' Gehalt ': 1000), (' Name ':' Alan Turing ',' Alter ': 25,' Gehalt ': 10000), (' Name ':' Sharon Lin ', 'Alter': 30, 'Gehalt': 8000), ('Name': 'Mikhail Tal', 'Alter': 40, 'Gehalt': 15000)) (('Name': 'Mikhail Tal', 'Alter') : 40, 'Gehalt': 15000), ('Name': 'Alan Turing', 'Alter': 25, 'Gehalt': 10000), ('Name ':' Sharon Lin ',' Alter ': 30,' Gehalt ': 8000), (' Name ':' John Hopkins ',' Alter ': 18,' Gehalt ': 1000))

Weitere Informationen zu Lambda-Funktionen finden Sie unter Python Lambda-Funktionen.

Interessante Beiträge...