Cum să sortați liste în Python

Acest articol vă va învăța cum să sortați o listă în Python.

În Python, puteți folosi metoda sort() pentru a sorta o listă în loc. Sau puteți folosi funcția încorporată sorted() pentru a obține o copie sortată a listei.

În acest tutorial, veți învăța:

  • Sintaxa metodei sort() și a funcției sorted().
  • Exemple de cod de liste de sortare în ordine crescătoare și descrescătoare
  • Personalizați sortarea utilizând parametrul cheie
  • Diferența dintre sort() și sortat()

Să începem!👩🏽‍💻

Sintaxa metodei Python sort().

Metoda sort() acţionează asupra unei liste Python. Și sortează lista în loc — și modifică lista originală.

Sintaxa pentru metoda sort() din Python este:

<list>.sort(reverse = True | False, key = <func>)

Să analizăm acum sintaxa de mai sus.

  • este orice obiect de listă Python valid.
  • inversul este un parametru opțional care ia fie adevărat, fie fals.
  • Valoarea implicită a reverse este False, iar lista este sortată în ordine crescătoare. Dați True pentru a sorta lista în ordine descrescătoare.
  • key este, de asemenea, un parametru opțional care este setat la .
  • poate fi o funcție încorporată sau o funcție definită de utilizator.

În secțiunea următoare, veți începe să codificați exemple simple.

Cum să sortați lista Python în ordine crescătoare

Luați în considerare numerele listei. Pentru a sorta lista în ordine crescătoare, puteți apela metoda sort() din listă.

▶ Rulați următorul fragment de cod.

nums = [25,13,6,17,9]
nums.sort()
print(nums)

# Output: [6, 9, 13, 17, 25]

Numerele listei au fost sortate în ordine crescătoare, iar lista originală a fost modificată. Aceasta se numește sortare pe loc.

Cum să sortați lista Python în ordine descrescătoare

Pentru a sorta lista în ordine descrescătoare, setați inversul la Adevărat, așa cum se arată mai jos.

nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Output: [25, 17, 13, 9, 6]

Puteți vedea că lista este acum sortată în ordine descrescătoare.

Cum se utilizează cheia cu metoda Python sort().

În această secțiune, să folosim parametrul cheie și să personalizăm sortarea.

Aici, mod5() este o funcție care preia un număr x și returnează restul atunci când numărul x este împărțit la 5.

def mod5(x):
  return x % 5 

Și am dori să folosim funcția de mai sus ca cheie.

Acum, rulați următoarea celulă de cod.

nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)

# Output: [25, 6, 17, 13, 9]

Luați un minut pentru a analiza rezultatul.

Observați cum, în loc de sortarea obișnuită, acum vă personalizați sortarea în funcție de cheia care este mod5.

  • Numărul care lasă restul minim atunci când este împărțit la 5 este primul acum.
  • Iar numărul care lasă cel mai mare rest atunci când este împărțit la 5 este ultimul element din lista sortată.

Pentru a verifica acest lucru, rulați următorul fragment de cod.

nums = [25,13,6,17,9]

for num in nums:
  print(f"{num} leaves remainder {num%5} when divided by 5")

# Output
25 leaves remainder 0 when divided by 5
13 leaves remainder 3 when divided by 5
6 leaves remainder 1 when divided by 5
17 leaves remainder 2 when divided by 5
9 leaves remainder 4 when divided by 5

5 împarte exact 25, iar restul este 0. Deci, acesta este primul element din lista sortată. 6 lasă un rest 1, deci este al doilea element și așa mai departe. 9 lasă restul 4 când este împărțit la 5 și este ultimul element din lista sortată.

În loc să definiți o funcție separată, ați putea la fel de bine să utilizați funcții lambda. În Python, lambda sunt funcții anonime cu o singură linie. lambda args : expresie returnează expresia calculată pe args.

Acum, să rescriem sortarea de mai sus folosind expresia lambda, așa cum se arată mai jos.

nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)

# Output: [25, 6, 17, 13, 9]

Până acum, ați învățat cum să sortați o listă de numere. Apoi, să vedem cum puteți sorta o listă de șiruri de caractere în Python.

Cum să sortați lista Python în ordine alfabetică

În această secțiune, veți învăța să sortați o listă de șiruri, cu exemple inspirate de Harry Potter. ✨

În exemplul nostru, studenții este o listă de studenți de la Hogwarts. Și am dori să le sortăm în ordinea alfabetică a numelor lor.

Când sortați o listă de șiruri, sortarea implicită este în ordine alfabetică.

students = ["Harry","Ron","Hermione","Draco","Cedric"]

Să tipărim lista sortată pentru a verifica rezultatul sortării.

students.sort()
print(students)

# Output
['Cedric','Draco', 'Harry', 'Hermione', 'Ron']

Cum să sortați lista Python în ordine alfabetică inversă

Pentru a sorta lista în ordine alfabetică inversă, setați reverse = True, așa cum se arată în fragmentul de cod de mai jos.

students.sort(reverse = True)
print(students)

# Output
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

Din rezultat, puteți vedea că lista a fost într-adevăr sortată în ordine inversă.

Cum se utilizează Parametrul cheie Personalizare Sortare

În această secțiune, să personalizăm sortarea utilizând parametrul cheie opțional.

Luați în considerare următoarea listă, case.

houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

Aici, case este o listă de dicționare. Fiecare dicționar conține două perechi cheie-valoare, una indicând numele elevilor și cealaltă casa căreia îi aparțin.

Acum, am dori să sortăm această listă de case în ordinea alfabetică a caselor cărora le aparțin.

După cum probabil ați ghicit până acum, ar trebui să setăm parametrul cheie pentru casa anumitor studenți.

Pentru a recupera casa fiecărui student, puteți defini o funcție returnHouse(), așa cum se arată mai jos.

def returnHouse(student):
  return student['house']

Această funcție returnează casa căreia îi aparține respectivul student.

Acum, puteți apela metoda sort() din lista de case, așa cum se arată.

houses.sort(key=returnHouse)

În rezultatul de mai jos, observați cum lista este sortată în funcție de casă și nu de numele elevilor. De aceea avem Gryffindor, Hufflepuff și Slytherin — în ordine alfabetică.

print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

Pentru a defini parametrul cheie în consecință, puteți utiliza și o funcție lambda. Pentru fiecare articol din listă, această funcție returnează casa pentru acel element din listă.

▶ Rulați următoarea celulă de cod pentru a verifica acest lucru.

houses.sort(key=lambda student:student["house"])
print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

În toate exemplele de până acum, ați folosit metoda sort() pe o listă. Și acum știți că modifică lista originală.

Ce se întâmplă dacă doriți să păstrați lista originală așa cum este, dar să obțineți o copie sortată a listei?

Ei bine, în Python, puteți folosi funcția sorted() pentru a face acest lucru.

Sintaxa funcției Python sorted().

Funcția sorted() ia ca argument o listă sau orice colecție. Și returnează o copie sortată a listei, iar lista originală nu este modificată.

Sintaxa pentru funcția sortat() din Python este:

<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

Observați cum sintaxa este foarte asemănătoare cu metoda sort() pe care am văzut-o mai devreme.

  • este orice obiect listă Python valid și este un parametru obligatoriu.
  • reversul și cheia sunt parametri opționali

Notă: Spre deosebire de metoda sort() care acționează numai asupra listelor, funcția sorted() poate fi utilizată pentru a sorta orice iterabil Python, cum ar fi liste, șiruri și dicționare.

Cum se sortează lista Python folosind funcția sorted().

#1. În acest exemplu, nums este o listă de numere.

Puteți apela funcția sorted() cu nums ca argument. Și atribuiți-l listei sorted_nums1.

nums = [25,13,6,17,9]
sorted_nums1 = sorted(nums)
print(sorted_nums1)

# Output: [6, 9, 13, 17, 25]

În rezultatul de mai sus, puteți vedea că numerele au fost sortate în ordine crescătoare în mod implicit.

De asemenea, observați că numerele listei originale nu sunt modificate – deoarece sorted() returnează o nouă listă. Acest lucru este verificat mai jos.

print(nums)
 # Output: [25, 13, 6, 17, 9]

#2. Acum, setați parametrul opțional invers la True și obțineți sortd_nums2.

După cum se arată în celula de cod de mai jos, sorted_nums2 este o listă nouă cu elementele sortate în ordine descrescătoare.

sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)

# Output: [25, 17, 13, 9, 6]

#3. În acest exemplu, să lucrăm cu o listă de șiruri.

Ca și în exemplele anterioare, apelarea funcției sorted() returnează o nouă listă. Și articolele sunt sortate în ordine alfabetică.

fruits = ['pears','strawberry','apple','pineapple','blueberry']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)

# Output:
['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']

#4. Acum, să personalizăm sortarea utilizând parametrul cheie opțional. Setați cheia pe len. Aceasta va sorta lista în funcție de lungimea șirurilor.

Notă: În Python, funcția încorporată len() preia orice iterabil, cum ar fi liste, șir, tupluri și așa mai departe. Și returnează lungimea iterabilului.

Șirul cu cea mai scurtă lungime apare primul în lista sortată, iar cel mai lung șir apare la sfârșitul listei sortate.

fruits = ['pear','strawberry','apple','pineapple','blueberry']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)

# Output:
['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']

În rezultatul de mai sus, para este cel mai scurt șir, iar căpșunul este cel mai lung șir.

Metoda Python sort() vs. Funcția sorted().

Până acum, ați învățat cum să utilizați metoda sort() precum și funcția sorted(). În această secțiune, să enumerăm diferențele dintre aceste două metode.

Python .sort() MetodăPython sortat() FuncțieSortează lista în loc — modifică lista originală Returnează o nouă listă sortată Funcționează numai cu liste PythonFuncționează cu iterabile Python, cum ar fi liste, șiruri și alte colecțiiAre tipul returnat Niciunul Returnează o copie sortată

Rezumând 👩‍🏫

Sper că ați găsit util acest tutorial de liste Python.

Să rezumam rapid ceea ce am acoperit.

  • Folosiți list.sort(reverse = True | False, key = ) cu parametrii opționali invers și cheie pentru a sorta o listă.
  • Utilizați sortat(listă, inversă = Adevărat | Fals, cheie = ) pentru a obține o copie sortată a listei.

Acum că ați învățat cum să sortați listele Python, aflați despre înțelegerea listelor în Python. Sau ați putea la fel de bine să învățați cum să gestionați fișierele sau să lucrați cu fișiere JSON în Python.

Puteți încerca exemplele date mai sus în tipstrick.ro Online Python Compiler.

  10 instrumente online pentru a-ți testa tastatura