Třídění seznamu Python ()

Metoda sort () třídí prvky daného seznamu v konkrétním vzestupném nebo sestupném pořadí.

Syntaxe sort()metody je:

 list.sort (klíč =…, vzad =…)

Alternativně můžete ke stejnému účelu použít také vestavěnou funkci seřazené () Pythonu.

 seřazeno (seznam, klíč =…, vzad =…)

Poznámka: Nejjednodušší rozdíl mezi sort()a sorted()je: sort()změní seznam přímo a nevrátí žádnou hodnotu, zatímco sorted()nezmění seznam a vrátí seřazený seznam.

Parametry sort ()

Ve výchozím nastavení sort()nevyžaduje žádné další parametry. Má však dva volitelné parametry:

  • reverzní - Pokud Trueje seřazený seznam obrácen (nebo seřazen sestupně)
  • klíč - funkce, která slouží jako klíč pro porovnání řazení

Vrátit hodnotu z sort ()

sort()Metoda nevrací žádnou hodnotu. Spíše změní původní seznam.

Chcete-li, aby funkce místo seřazeného seznamu vrátila seřazený seznam, použijte sorted().

Příklad 1: Řazení daného seznamu

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

Výstup

 Řazený seznam: ('a', 'e', ​​'i', 'o', 'u')

Řadit sestupně

sort()Metoda přijímá reverseparametr jako volitelného argumentu.

Nastavení reverse = Trueseřadí seznam v sestupném pořadí.

 list.sort(reverse=True)

Alternativně pro sorted()můžete použít následující kód.

 sorted(list, reverse=True)

Příklad 2: Seřadit seznam v sestupném pořadí

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

Výstup

 Řazený seznam (sestupně): ('u', 'o', 'i', 'e', ​​'a')

Řazení pomocí vlastní funkce pomocí klávesy

Pokud chcete vlastní implementaci pro třídění, sort()metoda také přijímá keyfunkci jako volitelný parametr.

Na základě výsledků klíčové funkce můžete daný seznam seřadit.

 list.sort(key=len)

Alternativně pro tříděné:

 sorted(list, key=len)

Zde lenje zabudovaná funkce Pythonu pro počítání délky prvku.

Seznam je seřazen podle délky každého prvku, od nejnižšího počtu po nejvyšší.

Víme, že n-tice je ve výchozím nastavení tříděna podle prvního parametru. Pojďme se podívat na to, jak přizpůsobit sort()metodu řazení pomocí druhého prvku.

Příklad 3: Seřadit seznam pomocí klávesy

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

Výstup

 Řazený seznam: ((4, 1), (2, 2), (1, 3), (3, 4))

Vezměme si další příklad. Předpokládejme, že máme seznam informací o zaměstnancích kanceláře, kde každý prvek je slovník.

Seznam můžeme seřadit následujícím způsobem:

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

Výstup

(('' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Michail Tal ',' věk ': 40,' plat ': 15000), (' Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000)) ((' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' Sharon Lin ', 'age': 30, 'plate': 8000), ('Name': 'Michail Tal', 'age': 40, 'plate': 15000)) (('Name': 'Michail Tal', 'age' : 40, 'plat': 15000), ('Jméno': 'Alan Turing', 'věk': 25, 'plat': 10 000), ('Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000))

Tady v prvním případě vrátí naše vlastní funkce jméno každého zaměstnance. Jelikož se jedná o název string, Python ho standardně třídí podle abecedního pořadí.

V druhém případě intse vrátí age ( ) a seřadí se vzestupně.

Ve třetím případě funkce vrací plat ( int) a je tříděna v sestupném pořadí pomocí reverse = True.

Je dobré použít funkci lambda, když lze funkci shrnout do jednoho řádku. Výše uvedený program tedy můžeme napsat také jako:

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

Výstup

(('' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Michail Tal ',' věk ': 40,' plat ': 15000), (' Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000)) ((' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' Sharon Lin ', 'age': 30, 'plate': 8000), ('Name': 'Michail Tal', 'age': 40, 'plate': 15000)) (('Name': 'Michail Tal', 'age' : 40, 'plat': 15000), ('Jméno': 'Alan Turing', 'věk': 25, 'plat': 10 000), ('Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000))

Další informace o funkcích lambda najdete na stránkách Python Lambda Functions.

Zajímavé články...