Python rendezve ()

A sorted () függvény rendezett listát ad vissza az iterálható elemekből.

A sorted()függvény egy adott iterálható elemeket meghatározott sorrendben rendezi (akár növekvő, akár csökkenő ), és a rendezett iterable-t listaként adja vissza.

A sorted()függvény szintaxisa :

 rendezve (iterálható, kulcs = nincs, fordított = hamis)

A rendezett () függvény paraméterei

sorted() legfeljebb három paramétert vehet fel:

  • iterálható - szekvencia (karakterlánc, páros , lista) vagy gyűjtemény (halmaz, szótár, rögzített halmaz) vagy bármely más iterátor.
  • fordított (Opcionális) - Ha True, a rendezett lista megfordul (vagy csökkenő sorrendben van rendezve). Alapértelmezés szerint, Falseha nincs megadva.
  • kulcs (opcionális) - A rendezés összehasonlításának kulcsaként szolgáló funkció. Alapértelmezés szerint None.

1. példa: Karakterlánc, lista és duplázás rendezése

 # vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))

Kimenet

 ("a", "e", "i", "o", "u") ("P", "h", "n", "o", "t", "y") ("a" , „e”, „i”, „o”, „u”)

Figyelje meg, hogy minden esetben rendezett lista kerül visszaadásra.

Megjegyzés: A listának van egy sort () metódusa is, amely ugyanúgy működik, mint a sorted(). Az egyetlen különbség az, hogy a sort()módszer nem ad vissza értéket, és megváltoztatja az eredeti listát.

2. példa: Rendezés csökkenő sorrendben

A sorted()függvény elfogad egy reverseparamétert opcionális argumentumként.

A beállítás reverse = Trueaz iterálást csökkenő sorrendbe rendezi.

 # set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))

Kimenet

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o' , „i”, „e”, „a”)

kulcs Paraméter a Python rendezett () függvényben

Ha saját megvalósítását szeretné rendezni, akkor sorted()egy keyfunkciót is elfogadhat opcionális paraméterként.

A kulcsfüggvény visszaadott értéke alapján rendezheti az adott iterálást.

 rendezve (iterálható, kulcs = len)

Itt len()található a Python beépített függvénye az objektum hosszának számlálására.

A lista az elem hossza alapján van rendezve, a legkisebb számtól a legnagyobbig.

3. példa: Rendezze a listát a sorted () használatával, amelynek kulcsfontosságú funkciója van

 # take the second element for sort def take_second(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key sorted_list = sorted(random, key=take_second) # print list print('Sorted list:', sorted_list)

Kimenet

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

4. példa: Rendezés több kulccsal

Tegyük fel, hogy a következő lista áll rendelkezésünkre:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )

A listát úgy akarjuk rendezni, hogy a legmagasabb pontszámot elért hallgató legyen az elején. Abban az esetben, ha a tanulók egyenlő pontszámokkal rendelkeznek, azokat úgy kell rendezni, hogy a fiatalabb résztvevő legyen az első.

Ezt a fajta rendezést több kulccsal is elérhetjük, ha szám helyett duplát adunk vissza.

Két típust össze lehet hasonlítani úgy, hogy összehasonlítjuk elemeiket elölről. Ha döntetlen van (az elemek egyenlőek), akkor a második elemet hasonlítják össze, és így tovább.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Használjuk ezt a logikát a rendezési logikánk felépítéséhez.

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)

Kimenet

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Mivel a rendezési logikai függvény kicsi és egy sorba illeszkedik, a lambdafüggvényt belül használjuk, keynem pedig külön függvénynév átadásával.

A fenti program lambdaa következő módon írható a függvény segítségével :

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)

Kimenet

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Ha többet szeretne megtudni a lambda függvényekről, keresse fel a Python Lambda függvényeket.

érdekes cikkek...