Python-lijst sorteren ()

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 reverseparameter als een optioneel argument.

De instelling reverse = Truesorteert 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 keyfunctie 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 lenis 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.

Interessante artikelen...