A sort () metódus egy adott lista elemeit meghatározott növekvő vagy csökkenő sorrendbe rendezi.
A sort()
módszer szintaxisa :
list.sort (kulcs =…, fordított =…)
Alternatív megoldásként a Python beépített rendezett () függvényét is felhasználhatja ugyanarra a célra.
rendezve (lista, kulcs =…, fordított =…)
Megjegyzés: A sort()
és sorted()
a legegyszerűbb különbség : sort()
közvetlenül módosítja a listát, és nem ad vissza értéket, míg sorted()
a listát nem változtatja meg, és a rendezett listát adja vissza.
sort () Paraméterek
Alapértelmezés szerint sort()
nem igényel extra paramétereket. Két opcionális paramétere van:
- fordított - Ha
True
, a rendezett lista megfordul (vagy csökkenő sorrendben van rendezve) - kulcs - a rendezés összehasonlításának kulcsaként szolgáló funkció
Visszatérési érték a rendezésből ()
A sort()
metódus nem ad vissza értéket. Inkább megváltoztatja az eredeti listát.
Ha azt szeretné, hogy egy függvény az eredeti lista megváltoztatása helyett a rendezett listát adja vissza, használja a sorted()
.
1. példa: Rendezzen egy adott listát
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)
Kimenet
Rendezett lista: ('a', 'e', 'i', 'o', 'u')
Rendezés csökkenő sorrendben
A sort()
metódus reverse
paramétert fogad el opcionális argumentumként.
A Beállítás reverse = True
sorrendben rendezi a listát.
list.sort(reverse=True)
Alternatív megoldásként sorted()
a következő kódot használhatja.
sorted(list, reverse=True)
2. példa: Rendezze a listát csökkenő sorrendben
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)
Kimenet
Rendezett lista (csökkenő formában): ('u', 'o', 'i', 'e', 'a')
Rendezés egyedi funkcióval a billentyű segítségével
Ha saját megvalósítást szeretne rendezésre, akkor a sort()
módszer egy key
funkciót is elfogad, mint opcionális paramétert.
A kulcsfunkció eredményei alapján rendezheti az adott listát.
list.sort(key=len)
Rendezés szerint:
sorted(list, key=len)
Itt len
van a Python beépített függvénye az elem hosszának számlálására.
A lista rendezése az egyes elemek hossza alapján történik, a legkisebb számtól a legnagyobbig.
Tudjuk, hogy a duplát alapértelmezés szerint az első paramétere alapján rendezik. Nézzük meg, hogyan lehet testreszabni a sort()
módszert a második elem segítségével történő rendezésre.
3. példa: A lista rendezése a kulccsal
# 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)
Kimenet
Rendezett lista: ((4, 1), (2, 2), (1, 3), (3, 4))
Vegyünk egy másik példát. Tegyük fel, hogy van egy információs listánk egy iroda alkalmazottairól, ahol minden elem szótár.
A listát a következő módon rendezhetjük:
# 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='')
Kimenet
((„Név”: „Alan Turing”, „életkor”: 25, „fizetés”: 10000), („Név”: „John Hopkins”, „életkor”: 18, „fizetés”: 1000), („Név ":" Mikhail Tal "," életkor ": 40," fizetés ": 15000), (" Név ":" Sharon Lin "," életkor ": 30," fizetés ": 8000)) ((" Név ":" John Hopkins "," életkor ": 18," fizetés ": 1000), (" Név ":" Alan Turing "," életkor ": 25," fizetés ": 10000), (" Név ":" Sharon Lin ", „életkor”: 30, „fizetés”: 8000), („név”: „Mikhail Tal”, „életkor”: 40, „fizetés”: 15000)) ((„név”: „Mikhail Tal”, „életkor”) : 40, „fizetés”: 15000), („Név”: „Alan Turing”, „életkor”: 25, „fizetés”: 10000), (”Név ”:„ Sharon Lin ”,„ életkor: 30, „fizetés”: 8000), („Név”: „John Hopkins”, „életkor”: 18, „fizetés”: 1000))
Itt az első esetben egyéni függvényünk minden alkalmazott nevét visszaadja. Mivel a név a string
, a Python alapértelmezés szerint az ábécérend szerint rendezi.
A második esetben az életkor ( int
) visszatér, és növekvő sorrendbe van rendezve.
A harmadik esetben a függvény visszaadja a fizetést ( int
), és a csökkenő sorrendben rendezi reverse = True
.
Jó gyakorlat a lambda függvény használata, amikor a függvény egy sorban összefoglalható. Tehát a fenti programot is így írhatjuk:
# 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='')
Kimenet
((„Név”: „Alan Turing”, „életkor”: 25, „fizetés”: 10000), („Név”: „John Hopkins”, „életkor”: 18, „fizetés”: 1000), („Név ":" Mikhail Tal "," életkor ": 40," fizetés ": 15000), (" Név ":" Sharon Lin "," életkor ": 30," fizetés ": 8000)) ((" Név ":" John Hopkins "," életkor ": 18," fizetés ": 1000), (" Név ":" Alan Turing "," életkor ": 25," fizetés ": 10000), (" Név ":" Sharon Lin ", „életkor”: 30, „fizetés”: 8000), („név”: „Mikhail Tal”, „életkor”: 40, „fizetés”: 15000)) ((„név”: „Mikhail Tal”, „életkor”) : 40, „fizetés”: 15000), („Név”: „Alan Turing”, „életkor”: 25, „fizetés”: 10000), (”Név ”:„ Sharon Lin ”,„ életkor: 30, „fizetés”: 8000), („Név”: „John Hopkins”, „életkor”: 18, „fizetés”: 1000))
Ha többet szeretne megtudni a lambda függvényekről, keresse fel a Python Lambda függvényeket.