Python razvrščen ()

Funkcija sorted () vrne razvrščeni seznam med elementi v iterabilu.

sorted()Funkcija razvrsti elementi neka iterable v določenem vrstnem redu (bodisi rastoče ali Padajoče ) in vrne iterable razporejene v obliki seznama.

Sintaksa sorted()funkcije je:

 razvrščeno (iterable, key = None, reverse = False)

Parametri za funkcijo sorted ()

sorted() lahko sprejme največ tri parametre:

  • iterable - zaporedje (niz, nabor, seznam) ali zbirka (niz, slovar, zamrznjeni niz) ali kateri koli drug iterator.
  • obratno (neobvezno) - Če Trueje razvrščen seznam obrnjen (ali razvrščen v padajočem vrstnem redu). Privzeto, Falseče ni navedeno.
  • tipka (izbirno) - funkcija, ki služi kot ključ za primerjavo razvrščanja. Privzete vrednosti None.

Primer 1: Razvrsti niz, seznam in nabor

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

Izhod

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

Upoštevajte, da se v vseh primerih vrne razvrščeni seznam.

Opomba: Seznam ima tudi metodo sort (), ki deluje enako kot sorted(). Edina razlika je v tem, da sort()metoda ne vrne nobene vrednosti in spremeni prvotni seznam.

Primer 2: Razvrsti v padajočem vrstnem redu

sorted()Funkcija sprejme reverseparameter kot izbirni argument.

Nastavitev reverse = Truerazvrsti iterable v padajočem vrstnem redu.

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

Izhod

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

key Parameter v funkciji Python sorted ()

Če želite lastno izvedbo za razvrščanje, sorted()sprejme keyfunkcijo tudi kot izbirni parameter.

Na podlagi vrnjene vrednosti funkcije ključa lahko razvrstite dani iterable.

 razvrščeno (iterable, key = len)

Tu len()je vgrajena Pythonova funkcija za štetje dolžine predmeta.

Seznam je razvrščen glede na dolžino elementa, od najmanjšega do največjega.

Primer 3: Razvrstite seznam z uporabo sorted (), ki ima funkcijo ključa

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

Izhod

 Razvrščen seznam: ((4, 1), (2, 2), (1, 3), (3, 4))

Primer 4: Razvrščanje z več tipkami

Predpostavimo, da imamo naslednji seznam:

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

Seznam želimo razvrstiti tako, da bo na začetku študent z najvišjimi ocenami. Če imajo učenci enake ocene, jih je treba razvrstiti tako, da je mlajši udeleženec na prvem mestu.

Tovrstno razvrščanje lahko dosežemo z več tipkami tako, da namesto števila vrnemo tuple.

Dva nabora lahko primerjamo s primerjavo njihovih elementov, začenši od prvega. Če obstaja izenačenost (elementi so enaki), se primerja drugi element itd.

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

Uporabimo to logiko za izdelavo logike razvrščanja.

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

Izhod

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

Ker je logična funkcija razvrščanja majhna in se prilega v eno vrstico, se lambdafunkcija uporablja znotraj, keynamesto da posreduje ločeno ime funkcije.

Zgornji program lahko s lambdafunkcijo napišemo na naslednji način:

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

Izhod

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

Če želite izvedeti več o lambda funkcijah, obiščite Python Lambda Functions.

Zanimive Članki...