Python lista rendezése ()

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 reverseparamétert fogad el opcionális argumentumként.

A Beállítás reverse = Truesorrendben 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 keyfunkció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 lenvan 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.

érdekes cikkek...