Python sorditud ()

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 see Falseette 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 reverseparameetri valikulise argument.

Seadistus reverse = Truesorteerib 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 keyfunktsioon 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, lambdakasutatakse funktsiooni selle keyasemel, et edastada eraldi funktsiooni nimi.

Ülaltoodud programmi saab lambdafunktsiooni 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.

Huvitavad Artiklid...