De methode sort () sorteert de elementen van een bepaalde lijst in een specifieke oplopende of aflopende volgorde.
De syntaxis van de sort()
methode is:
list.sort (key = …, reverse = …)
Als alternatief kunt u ook de ingebouwde functie gesorteerd () van Python voor hetzelfde doel gebruiken.
gesorteerd (lijst, sleutel = …, omgekeerd = …)
Opmerking: het eenvoudigste verschil tussen sort()
en sorted()
is: sort()
verandert de lijst rechtstreeks en retourneert geen waarde, terwijl sorted()
de lijst niet verandert en de gesorteerde lijst retourneert.
sort () Parameters
Standaard zijn sort()
er geen extra parameters vereist. Het heeft echter twee optionele parameters:
- reverse - Als
True
, de gesorteerde lijst is omgekeerd (of gesorteerd in aflopende volgorde) - key - functie die dient als sleutel voor de sorteervergelijking
Retourwaarde van sort ()
De sort()
methode retourneert geen enkele waarde. Het verandert eerder de oorspronkelijke lijst.
Als u wilt dat een functie de gesorteerde lijst retourneert in plaats van de oorspronkelijke lijst te wijzigen, gebruikt u sorted()
.
Voorbeeld 1: Sorteer een bepaalde lijst
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)
Uitvoer
Gesorteerde lijst: ('a', 'e', 'i', 'o', 'u')
Sorteer in aflopende volgorde
De sort()
methode accepteert een reverse
parameter als een optioneel argument.
De instelling reverse = True
sorteert de lijst in aflopende volgorde.
list.sort(reverse=True)
Als alternatief sorted()
kunt u de volgende code gebruiken.
sorted(list, reverse=True)
Voorbeeld 2: Sorteer de lijst in aflopende volgorde
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)
Uitvoer
Gesorteerde lijst (in aflopend): ('u', 'o', 'i', 'e', 'a')
Sorteer met aangepaste functie met toets
Als u uw eigen implementatie voor het sorteren wilt, sort()
accepteert de methode ook een key
functie als een optionele parameter.
Op basis van de resultaten van de sleutelfunctie kunt u de gegeven lijst sorteren.
list.sort(key=len)
Alternatief voor gesorteerd:
sorted(list, key=len)
Hier len
is de ingebouwde functie van Python om de lengte van een element te tellen.
De lijst is gesorteerd op basis van de lengte van elk element, van het laagste aantal tot het hoogste.
We weten dat een tuple standaard wordt gesorteerd met de eerste parameter. Laten we eens kijken hoe we de sort()
methode kunnen aanpassen om te sorteren met behulp van het tweede element.
Voorbeeld 3: Sorteer de lijst met de toets
# 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)
Uitvoer
Gesorteerde lijst: ((4, 1), (2, 2), (1, 3), (3, 4))
Laten we een ander voorbeeld nemen. Stel dat we een lijst hebben met informatie over de medewerkers van een kantoor waarbij elk element een woordenboek is.
We kunnen de lijst op de volgende manier sorteren:
# 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='')
Uitvoer
(('Naam': 'Alan Turing', 'leeftijd': 25, 'salaris': 10000), ('Naam': 'John Hopkins', 'leeftijd': 18, 'salaris': 1000), ('Naam ':' Mikhail Tal ',' leeftijd ': 40,' salaris ': 15000), (' Naam ':' Sharon Lin ',' leeftijd ': 30,' salaris ': 8000)) ((' Naam ':' John Hopkins ',' leeftijd ': 18,' salaris ': 1000), (' Naam ':' Alan Turing ',' leeftijd ': 25,' salaris ': 10000), (' Naam ':' Sharon Lin ', 'leeftijd': 30, 'salaris': 8000), ('Naam': 'Mikhail Tal', 'leeftijd': 40, 'salaris': 15000)) (('Naam': 'Mikhail Tal', 'leeftijd' : 40, 'salaris': 15000), ('Naam': 'Alan Turing', 'leeftijd': 25, 'salaris': 10000), ('Naam ':' Sharon Lin ',' leeftijd ': 30,' salaris ': 8000), (' Naam ':' John Hopkins ',' leeftijd ': 18,' salaris ': 1000))
Hier retourneert onze aangepaste functie voor het eerste geval de naam van elke werknemer. Omdat de naam a is string
, sorteert Python deze standaard in alfabetische volgorde.
Voor het tweede geval wordt age ( int
) geretourneerd en in oplopende volgorde gesorteerd.
Voor het derde geval retourneert de functie het salaris ( int
), en wordt in aflopende volgorde gesorteerd met reverse = True
.
Het is een goede gewoonte om de lambda-functie te gebruiken als de functie op één regel kan worden samengevat. We kunnen het bovenstaande programma dus ook schrijven als:
# 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='')
Uitvoer
(('Naam': 'Alan Turing', 'leeftijd': 25, 'salaris': 10000), ('Naam': 'John Hopkins', 'leeftijd': 18, 'salaris': 1000), ('Naam ':' Mikhail Tal ',' leeftijd ': 40,' salaris ': 15000), (' Naam ':' Sharon Lin ',' leeftijd ': 30,' salaris ': 8000)) ((' Naam ':' John Hopkins ',' leeftijd ': 18,' salaris ': 1000), (' Naam ':' Alan Turing ',' leeftijd ': 25,' salaris ': 10000), (' Naam ':' Sharon Lin ', 'leeftijd': 30, 'salaris': 8000), ('Naam': 'Mikhail Tal', 'leeftijd': 40, 'salaris': 15000)) (('Naam': 'Mikhail Tal', 'leeftijd' : 40, 'salaris': 15000), ('Naam': 'Alan Turing', 'leeftijd': 25, 'salaris': 10000), ('Naam ':' Sharon Lin ',' leeftijd ': 30,' salaris ': 8000), (' Naam ':' John Hopkins ',' leeftijd ': 18,' salaris ': 1000))
Ga naar Python Lambda Functions voor meer informatie over lambda-functies.