Python sortiert ()

Die Funktion sortiert () gibt eine sortierte Liste der Elemente in einer Iterable zurück.

Die sorted()Funktion sortiert die Elemente einer bestimmten Iterable in einer bestimmten Reihenfolge (entweder aufsteigend oder absteigend ) und gibt die sortierte Iterable als Liste zurück.

Die Syntax der sorted()Funktion lautet:

 sortiert (iterierbar, key = None, reverse = False)

Parameter für die Funktion sortiert ()

sorted() Es können maximal drei Parameter verwendet werden:

  • iterable - Eine Sequenz (Zeichenfolge, Tupel, Liste) oder Sammlung (Set, Wörterbuch, eingefrorenes Set) oder ein anderer Iterator.
  • umgekehrt (optional) - Wenn True, wird die sortierte Liste umgekehrt (oder in absteigender Reihenfolge sortiert). Der Standardwert ist, Falsewenn nicht angegeben.
  • Taste (optional) - Eine Funktion, die als Taste für den Sortiervergleich dient. Der Standardwert ist None.

Beispiel 1: Sortieren von Zeichenfolge, Liste und Tupel

 # vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))

Ausgabe

 ('a', 'e', ​​'i', 'o', 'u') ('P', 'h', 'n', 'o', 't', 'y') ('a' , 'e', ​​'i', 'o', 'u')

Beachten Sie, dass in allen Fällen eine sortierte Liste zurückgegeben wird.

Hinweis: Eine Liste verfügt auch über die Methode sort (), die auf die gleiche Weise wie ausgeführt wird sorted(). Der einzige Unterschied besteht darin, dass die sort()Methode keinen Wert zurückgibt und die ursprüngliche Liste ändert.

Beispiel 2: In absteigender Reihenfolge sortieren

Die sorted()Funktion akzeptiert einen reverseParameter als optionales Argument.

Durch die Einstellung wird reverse = Truedas iterable in absteigender Reihenfolge sortiert.

 # set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))

Ausgabe

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o') , 'i', 'e', ​​'a')

Schlüsselparameter in der Funktion Python sorted ()

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

Basierend auf dem zurückgegebenen Wert der Schlüsselfunktion können Sie die angegebene iterable sortieren.

 sortiert (iterable, key = len)

Hier len()ist Pythons eingebaute Funktion zum Zählen der Länge eines Objekts.

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

Beispiel 3: Sortieren Sie die Liste mit sorted () mit einer Schlüsselfunktion

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

Ausgabe

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

Beispiel 4: Sortieren mit mehreren Schlüsseln

Nehmen wir an, wir haben die folgende Liste:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )

Wir wollen die Liste so sortieren, dass der Schüler mit den besten Noten am Anfang steht. Wenn die Schüler die gleichen Noten haben, müssen sie so sortiert werden, dass der jüngere Teilnehmer an erster Stelle steht.

Wir können diese Art der Sortierung mit mehreren Schlüsseln erreichen, indem wir anstelle einer Zahl ein Tupel zurückgeben.

Zwei Tupel können verglichen werden, indem ihre Elemente von Anfang an verglichen werden. Wenn es ein Unentschieden gibt (Elemente sind gleich), wird das zweite Element verglichen und so weiter.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Verwenden wir diese Logik, um unsere Sortierlogik zu erstellen.

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)

Ausgabe

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Da die Sortierlogikfunktion klein ist und in eine Zeile passt, wird die lambdaFunktion im Inneren verwendet, keyanstatt einen separaten Funktionsnamen zu übergeben.

Das obige Programm kann mit der lambdaFunktion folgendermaßen geschrieben werden:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)

Ausgabe

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

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

Interessante Beiträge...