Python List sort ()

Sorteringsmetoden () sorterer elementene i en gitt liste i en bestemt stigende eller synkende rekkefølge.

Syntaksen til sort()metoden er:

 list.sort (nøkkel =…, omvendt =…)

Alternativt kan du også bruke Pythons innebygde sorterte () funksjon for samme formål.

 sortert (liste, nøkkel = …, omvendt = …)

Merk: Den enkleste forskjellen mellom sort()og sorted()er: sort()endrer listen direkte og gir ingen verdi, mens sorted()den ikke endrer listen og returnerer den sorterte listen.

sorter () parametere

Som standard sort()krever ingen ekstra parametre. Imidlertid har den to valgfrie parametere:

  • omvendt - Hvis True, er den sorterte listen omvendt (eller sortert i synkende rekkefølge)
  • nøkkel - funksjon som fungerer som en nøkkel for sorteringssammenligning

Returverdi fra sortering ()

Den sort()metoden ikke returnere noen verdi. Snarere endrer den den opprinnelige listen.

Hvis du vil at en funksjon skal returnere den sorterte listen i stedet for å endre den opprinnelige listen, bruker du sorted().

Eksempel 1: Sorter en gitt liste

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

Produksjon

 Sortert liste: ('a', 'e', ​​'i', 'o', 'u')

Sorter i synkende rekkefølge

Den sort()metode aksepterer en reverseparameter som en valgfri argument.

Innstilling reverse = Truesorterer listen i synkende rekkefølge.

 list.sort(reverse=True)

Alternativt sorted()kan du bruke følgende kode.

 sorted(list, reverse=True)

Eksempel 2: Sorter listen i synkende rekkefølge

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

Produksjon

 Sortert liste (i synkende): ('u', 'o', 'i', 'e', ​​'a')

Sorter med egendefinert funksjon ved hjelp av tasten

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

Basert på resultatene av nøkkelfunksjonen, kan du sortere den gitte listen.

 list.sort(key=len)

Alternativt for sortert:

 sorted(list, key=len)

Her lener Pythons innebygde funksjon for å telle lengden på et element.

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

Vi vet at en tuple er sortert ved hjelp av sin første parameter som standard. La oss se på hvordan du tilpasser sort()metoden for å sortere ved hjelp av det andre elementet.

Eksempel 3: Sorter listen ved hjelp av tasten

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

Produksjon

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

La oss ta et annet eksempel. Anta at vi har en liste med informasjon om de ansatte på et kontor der hvert element er en ordbok.

Vi kan sortere listen på følgende måte:

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

Produksjon

(('Navn': 'Alan Turing', 'alder': 25, 'lønn': 10000), ('Navn': 'John Hopkins', 'alder': 18, 'lønn': 1000), ('Navn ':' Mikhail Tal ',' alder ': 40,' lønn ': 15000), (' Navn ':' Sharon Lin ',' alder ': 30,' lønn ': 8000)) ((' Navn ':' John Hopkins ',' alder ': 18,' lønn ': 1000), (' Navn ':' Alan Turing ',' alder ': 25,' lønn ': 10000), (' Navn ':' Sharon Lin ', 'alder': 30, 'lønn': 8000), ('Navn': 'Mikhail Tal', 'alder': 40, 'lønn': 15000)) (('Navn': 'Mikhail Tal', 'alder' : 40, 'lønn': 15000), ('Navn': 'Alan Turing', 'alder': 25, 'lønn': 10000), ('Navn ':' Sharon Lin ',' alder ': 30,' lønn ': 8000), (' Navn ':' John Hopkins ',' alder ': 18,' lønn ': 1000))

Her, for det første tilfellet, returnerer vår tilpassede funksjon navnet på hver ansatt. Siden navnet er a string, sorterer Python som standard i alfabetisk rekkefølge.

For det andre tilfellet intreturneres alder ( ) og sorteres i stigende rekkefølge.

I det tredje tilfellet returnerer funksjonen lønnen ( int), og sorteres i fallende rekkefølge ved hjelp av reverse = True.

Det er en god praksis å bruke lambda-funksjonen når funksjonen kan oppsummeres i en linje. Så vi kan også skrive ovennevnte program som:

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

Produksjon

(('Navn': 'Alan Turing', 'alder': 25, 'lønn': 10000), ('Navn': 'John Hopkins', 'alder': 18, 'lønn': 1000), ('Navn ':' Mikhail Tal ',' alder ': 40,' lønn ': 15000), (' Navn ':' Sharon Lin ',' alder ': 30,' lønn ': 8000)) ((' Navn ':' John Hopkins ',' alder ': 18,' lønn ': 1000), (' Navn ':' Alan Turing ',' alder ': 25,' lønn ': 10000), (' Navn ':' Sharon Lin ', 'alder': 30, 'lønn': 8000), ('Navn': 'Mikhail Tal', 'alder': 40, 'lønn': 15000)) (('Navn': 'Mikhail Tal', 'alder' : 40, 'lønn': 15000), ('Navn': 'Alan Turing', 'alder': 25, 'lønn': 10000), ('Navn ':' Sharon Lin ',' alder ': 30,' lønn ': 8000), (' Navn ':' John Hopkins ',' alder ': 18,' lønn ': 1000))

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

Interessante artikler...