Python sorteret ()

Funktionen sorteret () returnerer en sorteret liste fra elementerne i en iterabel.

Den sorted()funktion sorteres elementerne i en given Iterable i en bestemt rækkefølge (enten stigende eller faldende ) og returnerer sorteret Iterable som en liste.

Funktionens syntaks sorted()er:

 sorteret (iterabel, nøgle = Ingen, omvendt = Falsk)

Parametre for den sorterede () funktion

sorted() kan maksimalt tage tre parametre:

  • iterable - En sekvens (streng, tuple, liste) eller samling (sæt, ordbog, frossent sæt) eller enhver anden iterator.
  • reverse (Valgfrit) - Hvis True, er den sorterede liste omvendt (eller sorteret i faldende rækkefølge). Standardindstillinger, Falsehvis ikke angivet.
  • key (Valgfri) - En funktion, der fungerer som en nøgle til sorteringssammenligningen. Som standard er None.

Eksempel 1: Sorter streng, liste og tuple

 # 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))

Produktion

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

Bemærk, at der i alle tilfælde returneres en sorteret liste.

Bemærk: En liste har også sorteringsmetoden (), der fungerer på samme måde som sorted(). Den eneste forskel er, at sort()metoden ikke returnerer nogen værdi og ændrer den oprindelige liste.

Eksempel 2: Sorter i faldende rækkefølge

Den sorted()funktion accepterer en reverseparameter som en valgfri argument.

Indstilling reverse = Truesorterer iterablen i faldende rækkefølge.

 # 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))

Produktion

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

nøgle Parameter i Python sorteret () funktion

Hvis du vil have din egen implementering til sortering, sorted()accepterer du også en keyfunktion som en valgfri parameter.

Baseret på den returnerede værdi af nøglefunktionen kan du sortere den givne iterabel.

 sorteret (iterabel, nøgle = len)

Her len()er Pythons indbyggede funktion til at tælle længden af ​​et objekt.

Listen er sorteret ud fra elementets længde, fra det laveste antal til det højeste.

Eksempel 3: Sorter listen ved hjælp af sorteret () med en nøglefunktion

 # 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)

Produktion

 Sorteret liste: ((4, 1), (2, 2), (1, 3), (3, 4))

Eksempel 4: Sortering med flere taster

Lad os antage, at vi har følgende 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) )

Vi vil sortere listen på en sådan måde, at den studerende med de højeste karakterer er i starten. Hvis de studerende har lige karakter, skal de sorteres, så den yngre deltager kommer først.

Vi kan opnå denne type sortering med flere nøgler ved at returnere tuple i stedet for et tal.

To tupler kan sammenlignes ved at sammenligne deres elementer startende fra første. Hvis der er uafgjort (elementerne er ens), sammenlignes det andet element osv.

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

Lad os bruge denne logik til at opbygge vores sorteringslogik.

 # 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)

Produktion

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

Da sorteringslogikfunktionen er lille og passer i en linje, bruges lambdafunktionen inde i keystedet for at videregive et separat funktionsnavn.

Ovenstående program kan skrives ved hjælp af lambdafunktionen på følgende måde:

 # 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)

Produktion

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

Hvis du vil lære mere om lambda-funktioner, skal du besøge Python Lambda-funktioner.

Interessante artikler...