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ă
True
lista sortată este inversată (sau sortată în ordine descrescătoare). Valori impliciteFalse
dacă 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 reverse
parametru ca argument opțional.
Setarea reverse = True
sortează 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 key
funcț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, lambda
funcția este utilizată în interior, key
mai degrabă decât trecerea unui nume de funcție separat.
Programul de mai sus poate fi scris folosind lambda
funcț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.