Python zoradený ()

Funkcia seřazené () vráti zoradený zoznam z položiek v iterovateľnej podobe.

sorted()Funkcia triedi prvky danej iterable v určitom poradí (a to buď vzostupne alebo zostupne ) a vráti radené iterable ako zoznam.

Syntax sorted()funkcie je:

 zoradené (iterovateľné, kláves = žiadne, reverzné = nepravdivé)

Parametre funkcie triedené ()

sorted() môže mať maximálne tri parametre:

  • iterovateľný - Sekvencia (reťazec, n-tica, zoznam) alebo kolekcia (množina, slovník, zmrazená množina) alebo akýkoľvek iný iterátor.
  • obrátiť (voliteľné) - Ak Trueje zoradený zoznam obrátený (alebo zoradený zostupne). Predvolené hodnoty, Falseak nie sú poskytnuté.
  • kláves (voliteľné) - funkcia, ktorá slúži ako kláves na porovnanie zoradenia. Predvolené hodnoty pre None.

Príklad 1: Zoradenie reťazca, zoznamu a n-tice

 # 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ýkon

 („a“, „e“, „i“, „o“, „u“) („P“, „h“, „n“, „o“, „t“, „y“) („a“ , 'e', ​​'i', 'o', 'u')

Všimnite si, že vo všetkých prípadoch sa vráti zoradený zoznam.

Poznámka: Zoznam má tiež metódu sort (), ktorá funguje rovnako ako sorted(). Jediný rozdiel je v tom, že sort()metóda nevráti žiadnu hodnotu a zmení pôvodný zoznam.

Príklad 2: Zoradiť zostupne

sorted()Funkcia prijíma reverseparameter ako voliteľného argumentu.

Nastavenie reverse = Truezoraďuje iteráciu v zostupnom poradí.

 # 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ýkon

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

kľúčový parameter vo funkcii Python triedené ()

Ak chcete vlastnú implementáciu na triedenie, sorted()prijme tiež keyfunkciu ako voliteľný parameter.

Na základe vrátenej hodnoty kľúčovej funkcie môžete danú iteráciu triediť.

 zoradené (iterovateľné, kľúč = len)

Tu len()je zabudovaná funkcia Pythonu na počítanie dĺžky objektu.

Zoznam je zoradený podľa dĺžky prvku od najnižšieho počtu po najvyššie.

Príklad 3: Zoradenie zoznamu pomocou seřazeného () s kľúčovou funkciou

 # 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ýkon

 Zoradený zoznam: ((4, 1), (2, 2), (1, 3), (3, 4))

Príklad 4: Zoradenie pomocou viacerých klávesov

Predpokladajme, že máme nasledujúci zoznam:

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

Zoznam chceme triediť tak, aby bol študent s najvyššími známkami na začiatku. V prípade, že majú študenti rovnaké známky, musia byť zoradení tak, aby bol mladší účastník na prvom mieste.

Tento typ triedenia môžeme dosiahnuť pomocou viacerých klávesov tak, že namiesto čísla vrátime n-ticu.

Dve n-tice je možné porovnať porovnaním ich prvkov počnúc prvou. Ak dôjde k rovnosti hlasov (prvky sú si rovné), porovná sa druhý prvok atď.

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

Použime túto logiku na vytvorenie našej logiky triedenia.

 # 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ýkon

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

Pretože logická funkcia triedenia je malá a zmestí sa do jedného riadku, namiesto zadania samostatného názvu lambdafunkcie sa použije funkcia vo vnútri key.

Vyššie uvedený program je možné zapísať pomocou lambdafunkcie nasledujúcim spôsobom:

 # 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ýkon

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

Ak sa chcete dozvedieť viac informácií o funkciách lambda, navštívte Python Lambda Functions.

Zaujímavé články...