Python List slags ()

Metoden sort () sorterer elementerne på en given liste i en bestemt stigende eller faldende rækkefølge.

Metodens syntaks sort()er:

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

Alternativt kan du også bruge Pythons indbyggede sorterede () funktion til det samme formål.

 sorteret (liste, nøgle = …, omvendt = …)

Bemærk: Den enkleste forskel mellem sort()og sorted()er: sort()ændrer listen direkte og returnerer ingen værdi, mens sorted()den ikke ændrer listen og returnerer den sorterede liste.

sorter () parametre

Som standard sort()kræver ingen ekstra parametre. Det har dog to valgfri parametre:

  • reverse - Hvis True, er den sorterede liste omvendt (eller sorteret i faldende rækkefølge)
  • nøgle - funktion, der fungerer som en nøgle til sorteringssammenligningen

Returværdi fra sortering ()

Den sort()metode ikke returnerer nogen værdi. Snarere ændrer den den oprindelige liste.

Hvis du vil have en funktion til at returnere den sorterede liste i stedet for at ændre den oprindelige liste, skal du bruge sorted().

Eksempel 1: Sorter en given liste

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

Produktion

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

Sorter i faldende rækkefølge

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

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

 list.sort(reverse=True)

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

 sorted(list, reverse=True)

Eksempel 2: Sorter listen i faldende rækkefølge

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

Produktion

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

Sorter med brugerdefineret funktion ved hjælp af tasten

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

Baseret på resultaterne af nøglefunktionen kan du sortere den givne liste.

 list.sort(key=len)

Alternativt til sorteret:

 sorted(list, key=len)

Her lener Pythons indbyggede funktion til at tælle længden på et element.

Listen er sorteret ud fra længden på hvert element, fra laveste antal til højeste.

Vi ved, at en tuple er sorteret ved hjælp af sin første parameter som standard. Lad os se på, hvordan man tilpasser sort()metoden til sortering ved hjælp af det andet element.

Eksempel 3: Sorter listen med 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)

Produktion

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

Lad os tage et andet eksempel. Antag, at vi har en liste med oplysninger om medarbejderne på et kontor, hvor hvert element er en ordbog.

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

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

Produktion

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

Her returnerer vores brugerdefinerede funktion i det første tilfælde navnet på hver medarbejder. Da navnet er a string, sorterer Python det som standard i alfabetisk rækkefølge.

I det andet tilfælde intreturneres alder ( ) og sorteres i stigende rækkefølge.

I det tredje tilfælde returnerer funktionen lønnen ( int) og sorteres i faldende rækkefølge ved hjælp af reverse = True.

Det er en god praksis at bruge lambda-funktionen, når funktionen kan opsummeres i en linje. Så vi kan også skrive ovenstående 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='')

Produktion

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

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

Interessante artikler...