Funktsioon sorted () tagastab itereeritavate üksuste sortitud loendi.
sorted()
Funktsiooni sorteerib elemente antud iterable kindlas järjekorras (kas kasvavalt või kahanevalt ) ja tagastab järjestatud iterable loendina.
Funktsiooni süntaks sorted()
on:
sorteeritud (iterable, võti = puudub, reverse = False)
Funktsiooni sorted () parameetrid
sorted()
võib võtta maksimaalselt kolm parameetrit:
- iterable - järjestus (string, dupleks , loend) või kogu (komplekt, sõnastik, külmutatud komplekt) või mõni muu iteraator.
- vastupidine (valikuline) - kui
True
, sorteeritud loend on vastupidine (või järjestatud kahanevas järjekorras). Vaikimisi on seeFalse
ette nähtud. - klahv (valikuline) - funktsioon, mis toimib sortimise võrdluse võtmena. Vaikimisi
None
.
Näide 1: Sordi string, loend ja dupleks
# 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))
Väljund
('a', 'e', 'i', 'o', 'u' ('P', 'h', 'n', 'o', 't', 'y') ('a' , „e”, „i”, „o”, „u”)
Pange tähele, et kõigil juhtudel tagastatakse sorditud loend.
Märkus . Loendis on ka meetod sort (), mis toimib samamoodi nagu sorted()
. Ainus erinevus on see, et sort()
meetod ei tagasta väärtust ja muudab algset loendit.
Näide 2: sortimine kahanevas järjekorras
sorted()
Funktsioon aktsepteerib reverse
parameetri valikulise argument.
Seadistus reverse = True
sorteerib iterable kahanevas järjekorras.
# 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))
Väljund
('u', 'o', 'i', 'e', 'a') ('u', 'o', 'i', 'e', 'a') ('u', 'o' (i, e, e, a)
võtme parameeter funktsioonis Python sorted ()
Kui soovite sortimiseks oma rakendust, sorted()
aktsepteerib key
funktsioon ka valikulise parameetrina.
Põhifunktsiooni tagastatud väärtuse põhjal saate antud iterable'i sorteerida.
sorteeritud (iterable, key = len)
Siin len()
on Pythoni sisseehitatud funktsioon objekti pikkuse lugemiseks.
Nimekiri sorteeritakse elemendi pikkuse põhjal, väikseimast arvust suurimani.
Näide 3: Sorteeri loend, kasutades klahvifunktsiooniga sorted ()
# 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)
Väljund
Sorteeritud loend: ((4, 1), (2, 2), (1, 3), (3, 4))
Näide 4: sortimine mitme võtmega
Oletame, et meil on järgmine loend:
# 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) )
Soovime nimekirja sorteerida nii, et kõige kõrgemate hindetega õpilane oleks alguses. Kui õpilastel on võrdsed hinned, tuleb need järjestada nii, et noorem osaleja oleks esikohal.
Sellise sorteerimise saame saavutada mitme võtmega, tagastades numbri asemel dupleksi.
Kaks elementi saab võrrelda, võrreldes nende elemente kõigepealt. Kui on olemas võrdsus (elemendid on võrdsed), võrreldakse teist elementi jne.
>>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True
Kasutame seda loogikat oma sortimisloogika ülesehitamiseks.
# 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)
Väljund
(('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )
Kuna sortimisloogika funktsioon on väike ja mahub ühele reale, lambda
kasutatakse funktsiooni selle key
asemel, et edastada eraldi funktsiooni nimi.
Ülaltoodud programmi saab lambda
funktsiooni abil kirjutada järgmiselt:
# 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)
Väljund
(('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )
Lambda funktsioonide kohta lisateabe saamiseks külastage lehte Python Lambda funktsioonid.