Acest ghid te va iniția în arta sortării listelor în Python.
În universul Python, dispui de metoda sort()
pentru a ordona o listă direct, modificând-o. Alternativ, funcția sorted()
creează o copie ordonată a listei, lăsând originalul intact.
Acest tutorial îți va dezvălui:
- Structura sintactică a metodei
sort()
și a funcțieisorted()
. - Exemple practice de ordonare a listelor în mod crescător și descrescător.
- Personalizarea sortării prin intermediul parametrului cheie.
- Diferențele esențiale dintre
sort()
șisorted()
.
Să începem călătoria! 🚀
Structura sintactică a metodei sort()
în Python
Metoda sort()
acționează direct asupra unei liste Python, ordonând-o în loc, ceea ce înseamnă că lista inițială este modificată.
Sintaxa metodei sort()
în Python este:
<listă>.sort(reverse = True | False, key = <funcție>)
Să analizăm mai îndeaproape această structură:
<listă>
reprezintă orice listă Python validă.reverse
este un parametru opțional, care poate primi valorileTrue
sauFalse
.- Valoarea implicită a lui
reverse
esteFalse
, ordonând lista în mod crescător. Dacă seteziTrue
, lista va fi sortată descrescător. key
este, de asemenea, un parametru opțional, setat la o funcție<funcție>
.- Această
<funcție>
poate fi o funcție predefinită sau una creată de utilizator.
În secțiunea următoare, vom explora câteva exemple practice.
Cum să sortezi o listă Python în ordine crescătoare
Să presupunem că avem o listă de numere. Pentru a o sorta în ordine crescătoare, vom apela metoda sort()
a listei.
▶ Rulează următorul cod:
nums = [25,13,6,17,9] nums.sort() print(nums) # Ieșire: [6, 9, 13, 17, 25]
Numerele au fost ordonate crescător, iar lista originală a suferit modificări. Acesta este un exemplu de sortare în loc.
Cum să sortezi o listă Python în ordine descrescătoare
Pentru a sorta lista descrescător, setează parametrul reverse
la True
, după cum urmează:
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Ieșire: [25, 17, 13, 9, 6]
Se observă că lista este acum ordonată de la cel mai mare la cel mai mic număr.
Cum se utilizează parametrul key
în metoda sort()
În această parte, vom folosi parametrul key
pentru a personaliza procesul de sortare.
Vom defini o funcție mod5()
, care primește un număr x
și returnează restul împărțirii lui x
la 5.
def mod5(x): return x % 5
Vom folosi această funcție ca bază pentru sortare.
Rulează următorul cod:
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Ieșire: [25, 6, 17, 13, 9]
Analizează rezultatul cu atenție.
În loc de o sortare standard, am personalizat ordonarea folosind funcția mod5
ca referință.
- Numărul care lasă cel mai mic rest la împărțirea cu 5 este acum primul.
- Cel care lasă cel mai mare rest este ultimul în lista sortată.
Pentru a confirma, rulează acest cod:
nums = [25,13,6,17,9] for num in nums: print(f"{num} are restul {num%5} la împărțirea cu 5") # Ieșire 25 are restul 0 la împărțirea cu 5 13 are restul 3 la împărțirea cu 5 6 are restul 1 la împărțirea cu 5 17 are restul 2 la împărțirea cu 5 9 are restul 4 la împărțirea cu 5
25 se împarte exact la 5, cu restul 0, deci este primul. 6 lasă restul 1, deci este al doilea, și așa mai departe. 9 lasă restul 4 și este ultimul.
În loc de o funcție separată, poți utiliza și funcții lambda. Acestea sunt funcții anonime, definite pe o singură linie. Structura lambda args : expresie
returnează rezultatul evaluării expresiei pe argumentele date.
Să rescriem exemplul de mai sus folosind o expresie lambda:
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Ieșire: [25, 6, 17, 13, 9]
Până acum, am ordonat liste de numere. Să vedem acum cum sortăm o listă de șiruri în Python.
Cum să sortezi o listă Python în ordine alfabetică
Vom învăța cum să sortăm o listă de șiruri, cu exemple inspirate din universul Harry Potter. ✨
Avem o listă de studenți de la Hogwarts și vrem să îi sortăm alfabetic după nume.
Când sortăm o listă de șiruri, ordonarea implicită este alfabetică.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
Să afișăm lista sortată:
students.sort() print(students) # Ieșire ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
Cum să sortezi o listă Python în ordine alfabetică inversă
Pentru a sorta în ordine alfabetică inversă, setează reverse = True
, conform exemplului de mai jos:
students.sort(reverse = True) print(students) # Ieșire ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
Lista este acum sortată alfabetic invers.
Cum să folosești parametrul key
pentru a personaliza sortarea
Vom personaliza sortarea folosind parametrul opțional key
.
Avem următoarea listă, houses
:
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
houses
este o listă de dicționare, fiecare având informații despre numele elevului și casa din Hogwarts.
Ne propunem să sortăm lista alfabetic după numele caselor.
Cum probabil ai anticipat, vom folosi parametrul key
pentru a indica casa fiecărui student.
Pentru a obține casa unui student, putem defini o funcție returnHouse()
:
def returnHouse(student): return student['house']
Această funcție returnează casa studentului.
Putem apela acum metoda sort()
:
houses.sort(key=returnHouse)
În rezultatul următor, lista este sortată după nume de casă, nu după numele elevului. De aceea, avem Gryffindor, Hufflepuff și Slytherin, în ordine alfabetică.
print(houses) # Ieșire [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Putem folosi, de asemenea, o funcție lambda pentru a defini parametrul key
. Funcția returnează casa fiecărui element din listă.
▶ Rulează următorul cod pentru a verifica:
houses.sort(key=lambda student:student["house"]) print(houses) # Ieșire [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Până acum, am folosit metoda sort()
, care modifică lista inițială.
Dar dacă dorim să păstrăm lista originală neschimbată și să obținem doar o copie sortată?
Putem folosi funcția sorted()
în acest scop.
Sintaxa funcției sorted()
în Python
Funcția sorted()
primește o listă sau orice colecție ca argument și returnează o copie sortată, lăsând originalul nemodificat.
Sintaxa funcției sorted()
este:
<copie_sortată> = sorted(<listă>, reverse = True | False, key = <funcție>)
Sintaxa seamănă cu cea a metodei sort()
.
<listă>
este un obiect listă Python valid și este un parametru obligatoriu.reverse
șikey
sunt parametri opționali.
Reține că, spre deosebire de sort()
, care acționează doar asupra listelor, funcția sorted()
poate fi folosită pentru a sorta orice iterabil, precum liste, șiruri și dicționare.
Cum să sortezi o listă Python folosind funcția sorted()
#1. nums
este o listă de numere:
Apelăm sorted()
cu nums
și atribuim rezultatul lui sorted_nums1
.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Ieșire: [6, 9, 13, 17, 25]
Numerele sunt sortate crescător implicit.
Observă că lista originală nums
nu este modificată, deoarece sorted()
returnează o listă nouă:
print(nums) # Ieșire: [25, 13, 6, 17, 9]
#2. Setăm parametrul opțional reverse
la True
și obținem sorted_nums2
.
După cum vezi, sorted_nums2
este o listă nouă, ordonată descrescător:
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Ieșire: [25, 17, 13, 9, 6]
#3. Vom lucra acum cu o listă de șiruri:
La fel ca în exemplele anterioare, sorted()
returnează o listă nouă, iar șirurile sunt ordonate alfabetic.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Ieșire: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. Personalizăm sortarea cu parametrul key
, setat la len
. Lista va fi ordonată în funcție de lungimea șirurilor.
Reține că, în Python, funcția len()
primește orice iterabil și returnează lungimea sa.
Șirul cel mai scurt apare primul, iar cel mai lung, ultimul.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Ieșire: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
În rezultatul de mai sus, ‘pear’ este cel mai scurt, iar ‘strawberry’ este cel mai lung.
Metoda sort()
vs. Funcția sorted()
în Python
Am învățat cum să folosim sort()
și sorted()
. Să recapitulăm diferențele dintre ele:
Metoda Python .sort() |
Funcția Python sorted() |
Sortează lista în loc, modificând-o. | Returnează o listă nouă, sortată. |
Funcționează doar cu liste Python. | Funcționează cu iterabile, precum liste, șiruri și alte colecții. |
Tipul returnat este None . |
Returnează o copie sortată. |
Rezumat 👩🏫
Sper că acest ghid despre sortarea listelor în Python ți-a fost util.
Să recapitulăm rapid ce am învățat:
- Folosește
listă.sort(reverse = True | False, key = <funcție>)
cu parametrii opționalireverse
șikey
pentru a sorta o listă. - Folosește
sorted(listă, reverse = True | False, key = <funcție>)
pentru a obține o copie sortată a listei.
Acum că știi cum să sortezi liste, explorează înțelegerea listelor în Python. Poți învăța, de asemenea, cum să gestionezi fișierele sau să lucrezi cu fișiere JSON în Python.
Încearcă exemplele de mai sus în compilatorul online de Python de pe tipstrick.ro.