Python sorted ()

Funcția sorted () returnează o listă sortată din elementele dintr-un iterabil.

sorted()Funcția sortează elementele unui anumit iterable într - o anumită ordine (fie crescator sau descrescator ) și returnează iterable sortate ca o listă.

Sintaxa sorted()funcției este:

 sortat (iterabil, cheie = Nici unul, invers = Fals)

Parametrii pentru funcția sorted ()

sorted() poate lua maximum trei parametri:

  • iterabil - O secvență (șir, tuplu, listă) sau colecție (set, dicționar, set înghețat) sau orice alt iterator.
  • invers (Opțional) - Dacă Truelista sortată este inversată (sau sortată în ordine descrescătoare). Valori implicite Falsedacă nu sunt furnizate.
  • tastă (Opțional) - O funcție care servește ca cheie pentru compararea sortării. Implicit la None.

Exemplul 1: Sortează șirul, lista și tuplul

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

Ieșire

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

Observați că în toate cazurile se returnează o listă sortată.

Notă: lista A are , de asemenea , metoda de sortare () , care realizează în același mod ca și sorted(). Singura diferență este că sort()metoda nu returnează nicio valoare și schimbă lista originală.

Exemplul 2: Sortează în ordine descrescătoare

sorted()Funcția acceptă un reverseparametru ca argument opțional.

Setarea reverse = Truesortează iterabilul în ordinea descrescătoare.

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

Ieșire

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

cheie Parametru în funcția Python sorted ()

Dacă doriți propria dvs. implementare pentru sortare, sorted()acceptă și o keyfuncție ca parametru opțional.

Pe baza valorii returnate a funcției cheie, puteți sorta iterabilul dat.

 sortat (iterabil, cheie = len)

Aici len()este funcția încorporată a Python de a număra lungimea unui obiect.

Lista este sortată în funcție de lungimea elementului, de la cel mai mic număr la cel mai mare.

Exemplul 3: Sortează lista folosind sorted () având o funcție de tastă

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

Ieșire

 Lista sortată: ((4, 1), (2, 2), (1, 3), (3, 4))

Exemplul 4: Sortarea cu mai multe taste

Să presupunem că avem următoarea listă:

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

Vrem să sortăm lista în așa fel încât elevul cu cele mai mari note să fie la început. În cazul în care elevii au note egale, trebuie să fie sortate astfel încât participantul mai tânăr să fie primul.

Putem realiza acest tip de sortare cu mai multe chei prin returnarea tuplului în locul unui număr.

Două tupluri pot fi comparate comparând elementele lor începând cu prima. Dacă există o egalitate (elementele sunt egale), al doilea element este comparat și așa mai departe.

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

Să folosim această logică pentru a ne construi logica de sortare.

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

Ieșire

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

Deoarece funcția logică de sortare este mică și se potrivește într-o singură linie, lambdafuncția este utilizată în interior, keymai degrabă decât trecerea unui nume de funcție separat.

Programul de mai sus poate fi scris folosind lambdafuncția în felul următor:

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

Ieșire

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

Pentru a afla mai multe despre funcțiile lambda, accesați Python Lambda Functions.

Articole interesante...