Python sortiran ()

Funkcija sorted () vraća sortirani popis iz stavki u iteralu.

sorted()Funkcija sortira elemente dano iterable u određenom redoslijedu (ili uzlazno ili silazno ) i vraća iterable razvrstani kao popis.

Sintaksa sorted()funkcije je:

 sortirano (iterable, key = None, reverse = False)

Parametri za funkciju sorted ()

sorted() može uzeti najviše tri parametra:

  • iterable - niz (niz, nabor, popis) ili zbirka (skup, rječnik, zamrznuti skup) ili bilo koji drugi iterator.
  • obrnuto (nije obavezno) - ako Trueje sortirani popis obrnut (ili sortiran u opadajućem redoslijedu). Zadane vrijednosti Falseako nisu navedene.
  • tipka (nije obavezno) - funkcija koja služi kao ključ za usporedbu sortiranja. Zadane vrijednosti None.

Primjer 1: Poredaj niz, popis i tuple

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

Izlaz

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

Primijetite da se u svim slučajevima vraća sortirani popis.

Napomena: Popis također ima metodu sort () koja se izvodi na isti način kao i sorted(). Jedina razlika je u tome što sort()metoda ne vraća nikakvu vrijednost i mijenja izvorni popis.

Primjer 2: Poredaj u padajućem redoslijedu

sorted()Funkcija prihvaća reverseparametar kao dodatni argument.

Postavljanje reverse = Truesortira iterable po padajućem redoslijedu.

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

Izlaz

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

tipka Parametar u funkciji Python sorted ()

Ako želite vlastitu implementaciju za sortiranje, sorted()prihvaća i keyfunkciju kao neobavezni parametar.

Na temelju vraćene vrijednosti funkcije ključa, možete sortirati zadani iterable.

 sortirano (iterable, key = len)

Ovdje len()je ugrađena Pythonova funkcija za brojanje duljine objekta.

Popis se sortira na temelju duljine elementa, od najmanjeg do najvišeg broja.

Primjer 3: Sortiranje popisa pomoću sorted () koji ima funkciju 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)

Izlaz

 Poredani popis: ((4, 1), (2, 2), (1, 3), (3, 4))

Primjer 4: Sortiranje s više ključeva

Pretpostavimo da imamo sljedeći popis:

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

Želimo sortirati popis na takav način da je student s najvišim ocjenama na početku. U slučaju da učenici imaju jednake ocjene, moraju se razvrstati tako da mlađi sudionik dođe na prvo mjesto.

Ovu vrstu sortiranja možemo postići s više ključeva vraćanjem korpice umjesto broja.

Dvije se korice mogu usporediti usporedbom njihovih elemenata počevši od prve. Ako postoji izjednačenje (elementi su jednaki), uspoređuje se drugi element itd.

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

Upotrijebimo ovu logiku za izgradnju logike sortiranja.

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

Izlaz

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

Budući da je logička funkcija sortiranja mala i stane u jedan redak, lambdafunkcija se koristi iznutra keyumjesto da prosljeđuje zasebno ime funkcije.

Gornji program može se napisati pomoću lambdafunkcije na sljedeći 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)

Izlaz

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

Da biste saznali više o lambda funkcijama, posjetite Python Lambda funkcije.

Zanimljivi članci...