Python sortert ()

Den sorterte () -funksjonen returnerer en sortert liste fra elementene i en iterabel.

Den sorted()funksjon sorteres elementene av en gitt iterable i en bestemt rekkefølge (enten stigende eller synkende ) og returnerer den sorterte iterable som en liste.

Syntaksen til sorted()funksjonen er:

 sortert (iterable, key = None, reverse = False)

Parametere for den sorterte () funksjonen

sorted() kan ta maksimalt tre parametere:

  • iterable - En sekvens (streng, tuple, liste) eller samling (sett, ordbok, frossent sett) eller hvilken som helst annen iterator.
  • revers (Valgfritt) - Hvis True, er den sorterte listen omvendt (eller sortert i synkende rekkefølge). Standardinnstillinger Falsehvis ikke oppgitt.
  • key (Valgfritt) - En funksjon som fungerer som en nøkkel for sorteringssammenligning. Standardinnstillingen er None.

Eksempel 1: Sorter streng, liste og 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))

Produksjon

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

Legg merke til at i alle tilfeller returneres en sortert liste.

Merk: En liste har også sorteringsmetoden () som fungerer på samme måte som sorted(). Den eneste forskjellen er at sort()metoden ikke returnerer noen verdi og endrer den opprinnelige listen.

Eksempel 2: Sorter i fallende rekkefølge

Den sorted()funksjon aksepterer en reverseparameter som en valgfri argument.

Innstilling reverse = Truesorterer iterabelen i synkende rekkefø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))

Produksjon

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

nøkkel Parameter i Python sortert () -funksjon

Hvis du vil ha din egen implementering for sortering, sorted()godtar du også en keyfunksjon som en valgfri parameter.

Basert på den returnerte verdien til nøkkelfunksjonen, kan du sortere den gitte iterabelen.

 sortert (iterable, key = len)

Her len()er Pythons innebygde funksjon for å telle lengden på et objekt.

Listen er sortert basert på lengden på elementet, fra laveste antall til høyeste.

Eksempel 3: Sorter listen ved hjelp av sortert () som har en nøkkelfunksjon

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

Produksjon

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

Eksempel 4: Sortering med flere taster

La oss anta 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 ønsker å sortere listen på en slik måte at eleven med høyest karakter er i begynnelsen. I tilfelle elevene har like karakter, må de sorteres slik at den yngre deltakeren kommer først.

Vi kan oppnå denne typen sortering med flere taster ved å returnere tuple i stedet for et tall.

To tupler kan sammenlignes ved å sammenligne elementene deres fra første. Hvis det er uavgjort (elementene er like), sammenlignes det andre elementet, og så videre.

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

La oss bruke denne logikken til å bygge vår sorteringslogikk.

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

Produksjon

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

Siden sorteringslogikkfunksjonen er liten og passer i en linje, brukes lambdafunksjonen i keystedet for å sende et eget funksjonsnavn.

Ovennevnte program kan skrives ved hjelp av lambdafunksjonen på følgende måte:

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

Produksjon

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

For å lære mer om lambda-funksjoner, besøk Python Lambda Functions.

Interessante artikler...