Python List sort ()

Metoden sort () sorterar elementen i en viss lista i en specifik stigande eller fallande ordning.

Syntaxen för sort()metoden är:

 list.sort (key = …, reverse = …)

Alternativt kan du också använda Pythons inbyggda sorterade () funktion för samma ändamål.

 sorterad (lista, tangent = …, omvänd = …)

Obs! Den enklaste skillnaden mellan sort()och sorted()är: sort()ändrar listan direkt och returnerar inget värde medan sorted()den inte ändrar listan och returnerar den sorterade listan.

sort () Parametrar

Som standard sort()kräver inga extra parametrar. Den har dock två valfria parametrar:

  • omvänd - Om True, den sorterade listan är omvänd (eller sorterad i fallande ordning)
  • key - funktion som fungerar som en nyckel för sorteringsjämförelsen

Returvärde från sort ()

Den sort()metod returnerar inte något värde. Snarare ändrar den den ursprungliga listan.

Om du vill att en funktion ska returnera den sorterade listan istället för att ändra den ursprungliga listan, använd sorted().

Exempel 1: Sortera en viss lista

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

Produktion

 Sorterad lista: ('a', 'e', ​​'i', 'o', 'u')

Sortera i fallande ordning

Den sort()metod accepterar en reverseparameter som ett valfritt argument.

Inställning reverse = Truesorterar listan i fallande ordning.

 list.sort(reverse=True)

Alternativt sorted()kan du använda följande kod.

 sorted(list, reverse=True)

Exempel 2: Sortera listan i fallande ordning

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

Produktion

 Sorterad lista (i fallande): ('u', 'o', 'i', 'e', ​​'a')

Sortera med anpassad funktion med hjälp av tangenten

Om du vill ha din egen implementering för sortering sort()accepterar metoden också en keyfunktion som en valfri parameter.

Baserat på resultaten av nyckelfunktionen kan du sortera den angivna listan.

 list.sort(key=len)

Alternativt för sorterade:

 sorted(list, key=len)

Här lenär Pythons inbyggda funktion för att räkna längden på ett element.

Listan sorteras utifrån längden på varje element, från lägsta antal till högsta.

Vi vet att en tuple sorteras med sin första parameter som standard. Låt oss titta på hur man anpassar sort()metoden för att sortera med hjälp av det andra elementet.

Exempel 3: Sortera listan med hjälp av tangenten

 # 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

 Sorterad lista: ((4, 1), (2, 2), (1, 3), (3, 4))

Låt oss ta ett annat exempel. Anta att vi har en lista med information om de anställda på ett kontor där varje element är en ordlista.

Vi kan sortera listan på följande sätt:

 # 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

(('Namn': 'Alan Turing', 'ålder': 25, 'lön': 10000), ('Namn': 'John Hopkins', 'ålder': 18, 'lön': 1000), ('Namn ':' Mikhail Tal ',' ålder ': 40,' lön ': 15000), (' Namn ':' Sharon Lin ',' ålder ': 30,' lön ': 8000)) ((' Namn ':' John Hopkins ',' ålder ': 18,' lön ': 1000), (' Namn ':' Alan Turing ',' ålder ': 25,' lön ': 10000), (' Namn ':' Sharon Lin ', 'ålder': 30, 'lön': 8000), ('Namn': 'Mikhail Tal', 'ålder': 40, 'lön': 15000)) (('Namn': 'Mikhail Tal', 'ålder' : 40, 'lön': 15000), ('Namn': 'Alan Turing', 'ålder': 25, 'lön': 10000), ('Namn ':' Sharon Lin ',' ålder ': 30,' lön ': 8000), (' Namn ':' John Hopkins ',' ålder ': 18,' lön ': 1000))

Här, för det första fallet, returnerar vår anpassade funktion namnet på varje anställd. Eftersom namnet är a string, sorterar Python det som standard i alfabetisk ordning.

I det andra fallet intreturneras ålder ( ) och sorteras i stigande ordning.

I det tredje fallet returnerar funktionen lönen ( int) och sorteras i fallande ordning med reverse = True.

Det är bra att använda lambdafunktionen när funktionen kan sammanfattas i en rad. Så vi kan också skriva ovanstå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

(('Namn': 'Alan Turing', 'ålder': 25, 'lön': 10000), ('Namn': 'John Hopkins', 'ålder': 18, 'lön': 1000), ('Namn ':' Mikhail Tal ',' ålder ': 40,' lön ': 15000), (' Namn ':' Sharon Lin ',' ålder ': 30,' lön ': 8000)) ((' Namn ':' John Hopkins ',' ålder ': 18,' lön ': 1000), (' Namn ':' Alan Turing ',' ålder ': 25,' lön ': 10000), (' Namn ':' Sharon Lin ', 'ålder': 30, 'lön': 8000), ('Namn': 'Mikhail Tal', 'ålder': 40, 'lön': 15000)) (('Namn': 'Mikhail Tal', 'ålder' : 40, 'lön': 15000), ('Namn': 'Alan Turing', 'ålder': 25, 'lön': 10000), ('Namn ':' Sharon Lin ',' ålder ': 30,' lön ': 8000), (' Namn ':' John Hopkins ',' ålder ': 18,' lön ': 1000))

För att lära dig mer om lambdafunktioner, besök Python Lambda-funktioner.

Intressanta artiklar...