„Python“ rūšiuojamas ()

Funkcija „sorted ()“ pateikia sugrupuotą sąrašą iš iteruojamų elementų.

sorted()Funkcija rūšiuoja tam tikros iterable elementai tam tikra tvarka (arba kylantieji arba Mažėjant ) ir grąžina rūšiuojami iterable kaip sąrašą.

sorted()Funkcijos sintaksė yra tokia:

 rūšiuojamas (iteruojamas, raktas = nėra, atvirkštinis = klaidingas)

Rūšiuotos () funkcijos parametrai

sorted() gali būti ne daugiau kaip trys parametrai:

  • iteruojamas - seka (eilutė, paketas , sąrašas) arba rinkinys (rinkinys, žodynas, užšaldytas rinkinys) ar bet kuris kitas iteratorius.
  • reverse (neprivaloma) - jei True, rūšiuojamas sąrašas yra atvirkštinis (arba rūšiuojamas mažėjančia tvarka). Numatyta, Falsejei nenurodyta.
  • klavišas (pasirinktinai) - funkcija, naudojama kaip rūšiavimo palyginimo raktas. Pagal numatytuosius nustatymus None.

1 pavyzdys: Rūšiuoti eilutę, sąrašą ir paketą

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

Rezultatas

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

Atkreipkite dėmesį, kad visais atvejais pateikiamas rūšiuojamas sąrašas.

Pastaba: Sąraše taip pat yra rūšiavimo () metodas, kuris veikia taip pat, kaip sorted(). Vienintelis skirtumas yra tas, kad sort()metodas negrąžina jokios vertės ir pakeičia pradinį sąrašą.

2 pavyzdys: Rūšiuoti mažėjimo tvarka

sorted()Funkcija priima reverseparametrą kaip pasirenkamojo argumentų.

Nustatant reverse = True, iteruojama rūšiuojama mažėjimo tvarka.

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

Rezultatas

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

raktas „Python sorted ()“ funkcijos parametras

Jei norite, kad rūšiavimas būtų jūsų paties įdiegtas, sorted()taip pat priima keyfunkciją kaip pasirenkamą parametrą.

Atsižvelgdami į grąžinamą pagrindinės funkcijos vertę, galite rūšiuoti pateiktą kartojamą.

 rūšiuojamas (iteruojamas, raktas = len)

Čia len()yra integruota „Python“ funkcija objekto ilgiui suskaičiuoti.

Sąrašas rūšiuojamas pagal elemento ilgį, nuo mažiausio skaičiaus iki didžiausio.

3 pavyzdys: rūšiuokite sąrašą naudodamiesi rūšiuojama (), turinčia pagrindinę funkciją

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

Rezultatas

 Rūšiuotas sąrašas: ((4, 1), (2, 2), (1, 3), (3, 4))

4 pavyzdys: rūšiavimas keliais klavišais

Tarkime, kad turime šį sąrašą:

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

Mes norime surikiuoti sąrašą taip, kad pradžioje būtų aukščiausių įvertinimų turintis studentas. Jei studentai turi vienodus pažymius, jie turi būti surūšiuoti taip, kad jaunesnis dalyvis būtų pirmas.

Tokį rūšiavimą galime pasiekti naudodamiesi keliais klavišais, vietoj skaičiaus grąžindami po kelis.

Dvi grupes galima palyginti lyginant jų elementus pradedant nuo pirmojo. Jei yra lygiosios (elementai yra lygūs), lyginamas antrasis elementas ir t.

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

Naudokime šią logiką kurdami savo rūšiavimo logiką.

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

Rezultatas

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

Kadangi rūšiavimo logikos funkcija yra maža ir telpa vienoje eilutėje, lambdafunkcija naudojama viduje, keyo ne perduoti atskirą funkcijos pavadinimą.

Pirmiau nurodytą programą galima parašyti naudojant lambdafunkciją taip:

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

Rezultatas

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

Norėdami sužinoti daugiau apie „lambda“ funkcijas, apsilankykite „Python Lambda“ funkcijos.

Įdomios straipsniai...