Înțelegerea funcției sortate în Python: un ghid simplu

Unul dintre marile avantaje ale utilizării Python este simplitatea acestuia. Este ușor să lucrați cu el, deoarece biblioteca sa standard are multe funcții utile. O astfel de funcție este funcția sortată.

Această funcție este folosită pentru a sorta iterabile după o anumită ordine. Fără o astfel de funcție, trebuie să scrieți codul implementând un algoritm de sortare precum Bubble Sort sau Insertion Sort. Acest lucru este adesea greu, dar Python oferă o modalitate mai simplă, pe care o vom acoperi în acest articol.

Introducere în funcția Sorted

Funcția sortată este o funcție care sortează iterabile în Python. Un iterabil este orice valoare pe care o puteți trece în buclă. Exemplele de iterabile includ șiruri, liste, tupluri și seturi. Aceste iterabile sunt adesea neordonate, iar sortarea își pune valorile într-o ordine specificată. Comandarea valorilor este utilă deoarece:

  • Căutarea cu valori este mai rapidă și mai eficientă folosind algoritmi precum Căutarea binară. Cu toate acestea, căutarea binară necesită ca valorile să fie mai întâi sortate.
  • Pentru a afișa valori. Uneori, utilizatorii ar dori să vadă informațiile sortate, de exemplu, mai întâi cel mai mic preț sau mai întâi cea mai recentă postare. Acest lucru ar necesita implementarea unui mod de sortare a unei liste de valori.
  • Când se efectuează analize statistice, de exemplu, găsirea valorii care apare cel mai frecvent într-un set. Este mai ușor să faceți acest lucru atunci când valorile sunt sortate în ordine.

Ghid de utilizare a funcției sortate

După cum am menționat mai devreme, funcția sortată funcționează cu toate iterabilele. La rândul său, returnează o listă care a fost sortată. Acest lucru este important de reținut – în timp ce intrarea poate fi orice iterabilă, valoarea returnată trebuie să fie întotdeauna o listă.

  Cum să faci o siglă folosind Midjourney

Sintaxa funcției sortate

Semnătura funcției a funcției sortate este următoarea:

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

După cum puteți vedea, singurul argument necesar este iterabilul, care va fi sortat.

Următorul argument este cheia. Cheia este o funcție care va fi folosită pentru a transforma fiecare element în iterabil pentru a obține o valoare care va fi folosită pentru sortare. Acest lucru va fi util pentru sortarea unei liste de dicționare, așa cum veți vedea mai târziu. Valoarea implicită este niciuna, deci nu va aplica nicio funcție decât dacă este specificată.

Ultimul argument este argumentul invers. Când este setat la adevărat, elementele vor fi sortate în ordine inversă.

În secțiunea următoare, voi folosi exemple pentru a demonstra cum se utilizează funcția.

Exemple de utilizare a funcției sortate

Lista numerelor

Cel mai simplu caz de sortare a valorilor este sortarea unei liste de numere. Luați în considerare următorul exemplu de cod:

# A list of unsorted values
numbers = [8, 4, 3, 9, 2, 0, 3]

# Sorting the numbers
sorted_numbers = sorted(numbers)

# Outputting the sorted values
print(sorted_numbers)

Ieșirea ar fi:

[0, 2, 3, 3, 4, 8, 9]

După cum puteți vedea, valorile au fost sortate în ordine crescătoare. Ați seta inversul la adevărat dacă doriți să le sortați în ordine descrescătoare. Prin urmare, linia 4 din exemplul de cod anterior ar fi:

sorted_numbers = sorted(numbers, reverse=True)

Rezultatul rulării programului modificat ar fi:

[9, 8, 4, 3, 3, 2, 0]

Listă de șiruri

Funcția sortată acceptă mai mult decât numere. De asemenea, puteți sorta șiruri. Pentru a sorta șirurile dintr-o listă, primele caractere ale șirurilor sunt comparate. Comparațiile sunt efectuate pe valorile ASCII ale personajelor. De exemplu, „bună ziua” ar fi înaintea cuvântului „lume”, deoarece valoarea ASCII a lui „h” este 104, mai mică decât valoarea ASCII a lui „w”, 119.

Dacă unul sau mai multe șiruri de caractere au același prim caracter, al doilea și caracterele ulterioare sunt comparate până când se găsește o anumită ordine. Iată un exemplu de cod în care sortăm numele persoanelor.

# Creating a list of names
members_list = ['bob', 'dave', 'charlie', 'alice']

# Sorting the names
sorted_members_list = sorted(members_list)

# Printing the names
print(sorted_members_list)

Aceasta va produce următoarea ieșire:

['alice', 'bob', 'charlie', 'dave']

Deoarece sunt folosite valori ASCII, ordonarea șirurilor depinde de caracterul care apare primul în tabelul ASCII. De exemplu, un caracter cu majuscule ar fi înaintea unui caracter mic, deoarece caracterele majuscule sunt înaintea literelor mici în ASCII. Iată un tabel ASCII complet pentru referință:

  Cum să instalezi Python pe Mac și să rulezi primul tău script

Sursa: commons.wikimedia.org

Alte iterabile – șiruri, tupluri și seturi

După cum am menționat, funcția sortată funcționează cu tot felul de iterabile. Aceleași reguli se aplică modului în care vor fi sortate valorile din iterabile. Iată un exemplu:

# Printing a sorted string
print(sorted("dijkstra"))

# Printing a sorted tuple of values
print(sorted((3, 4, 2, 1, 5, 0)))

# Printing a sorted set of values
print(sorted(set([4, 5, 5, 1, 3, 8, 9])))

Rezultatul acestuia va fi:

['a', 'd', 'i', 'j', 'k', 'r', 's', 't']
[0, 1, 2, 3, 4, 5]
[1, 3, 4, 5, 8, 9]

După cum puteți vedea, rezultatul în fiecare caz este o listă.

Lista dicționarelor

De asemenea, puteți aplica funcția sortată pentru a sorta o listă de dicționare. Cu toate acestea, sortarea dicționarelor este puțin mai complicată. Acest lucru se datorează faptului că, spre deosebire de numere sau șiruri, un dicționar are mai multe proprietăți, fiecare la fel de valabilă pentru comparație.

Deci, pentru a sorta dicționarele, specificați o funcție care va rezuma întregul dicționar la o valoare care va fi folosită pentru comparație. Această funcție va fi transmisă funcției sortate ca argument cheie. Iată un exemplu pentru a ilustra:

people = [
        { 'name': 'Alice', 'age': 27 },
        { 'name': 'Bob', 'age':  23 },
        { 'name': 'Charlie', 'age': 25}
]

people_sorted_by_age = sorted(people, key=lambda person: person['age'])
print(people_sorted_by_age)

În acest exemplu, avem trei persoane reprezentate de un obiect dicționar. Fiecare obiect are un nume și un atribut de vârstă. Vrem să sortăm oamenii după vârstă. Prin urmare, atunci când apelăm funcția sortată, trecem o funcție ca argument cheie.

Această funcție va prelua obiectul dicționar al unei persoane și va returna vârsta persoanei. Valoarea returnată a acestei chei va fi folosită pentru sortare. Prin urmare, întregul dicționar a fost rezumat într-un număr întreg simplu care poate fi comparat. Pentru simplitate, am folosit o funcție lambda pentru a defini argumentul cheie.

  Cum să utilizați Snap Camera pe Zoom

Rularea codului va produce următoarea ieșire:

[{'name': 'Bob', 'age': 23}, {'name': 'Charlie', 'age': 25}, {'name': 'Alice', 'age': 27}]

Cazul de utilizare a argumentului cheie

Argumentul cheie nu trebuie folosit doar atunci când sortați dicționare. Îl poți folosi pentru toate valorile. Utilizarea sa este de a furniza o cheie care poate fi folosită pentru a sorta valori. Iată exemple de cazuri de utilizare:

  • Sortarea valorilor prin definirea unei funcții cheie care preia valoarea și returnează lungimea valorii.
  • Sortarea șirurilor dintr-o listă fără a ține seama de majuscule și minuscule. Pentru a face acest lucru, fiecare șir din listă poate fi convertit în litere mici. Acest lucru poate fi realizat prin definirea unei funcții cheie care preia valoarea cheii unui șir și returnează o versiune cu litere mici a șirului.
  • Sortarea valorilor pe baza unei valori compuse care combină valorile altor intrări.

Complexitatea timpului de rulare a funcției sortate

Funcția sortată are o complexitate de rulare de O(n log n), unde n este numărul de elemente din intrarea iterabilă. Această complexitate apare deoarece funcția utilizează algoritmul Timsort, care este un algoritm de sortare hibrid bazat pe sortare prin îmbinare și sortare prin inserție.

Complexitatea spațială a funcției este O(n), unde n este încă numărul de elemente din intrare. Acest lucru se datorează faptului că o nouă listă este creată și returnată.

Funcția sortată vs. Funcția de sortare

O altă opțiune pentru sortarea valorilor este funcția de sortare. Această secțiune va explica diferențele cheie dintre funcțiile de sortare și de sortare.

  • Funcția sortare modifică iterabilul în loc, în timp ce funcția sortată creează o nouă listă și returnează aceasta.
  • Deoarece modificările sunt efectuate în loc, sortarea necesită ca intrarea să fie o listă. Pe de altă parte, sortat poate lua orice iterabil ca intrare, care va fi apoi folosit pentru a crea o nouă listă care va fi modificată și returnată.

Cuvinte finale

În acest articol, am acoperit funcția sortată – ce este, cum să o folosești și diferitele argumente pe care le preia. De asemenea, am acoperit diferite exemple de utilizare ale funcției și complexitatea ei de rulare și am comparat-o cu funcția de sortare.

În continuare, poate doriți să citiți articolul nostru despre Funcția Sum a lui Python.