Cum să sortați liste în Python
Publicat: 2022-03-30Acest 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țieisorted()
. - Exemple de cod de liste de sortare în ordine crescătoare și descrescătoare
- Personalizați sortarea utilizând parametrul
key
- Diferența dintre
sort()
șisorted()
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.
-
<list>
este orice obiect de listă Python valid. -
reverse
este un parametru opțional care ia fie adevărat, fie fals. - Valoarea implicită a
reverse
esteFalse
, iar lista este sortată în ordine crescătoare. DațiTrue
pentru a sorta lista în ordine descrescătoare. -
key
este, de asemenea, un parametru opțional care este setat la<func>
. -
<func>
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 nums
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]
nums
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 reverse
la True
, după 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 key
ș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 key
.
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 key
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, students
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ă cheia Parametrul Personalizați Sortarea
În această secțiune, să personalizăm sortarea utilizând parametrul key
opțional.
Luați în considerare următoarea listă, houses
.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
Aici, houses
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 key
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 caselor, 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 key
î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 utiliza 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 sorted()
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.
-
<list>
este orice obiect listă Python valid și este un parametru obligatoriu . -
reverse
șikey
sunt parametri opționali
Notă : Spre deosebire de metoda
sort()
care acționează numai asupra listelor, funcțiasorted()
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ă nums
au fost sortate în ordine crescătoare în mod implicit.
De asemenea, observați că nums
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 reverse
la True
și obțineți sorted_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 key
opțional. Setați key
la 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, pera 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.
Metoda Python .sort(). | Funcția Python sorted(). |
Sortează lista în loc — modifică lista originală | Returnează o nouă listă sortată |
Funcționează numai cu liste Python | Funcționează cu iterabile Python, cum ar fi liste, șiruri de caractere și alte colecții |
Are tipul de returnare None | Returnează o copie sortată a iterabilului |
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 = <func>) cu parametrii opționali invers și cheie pentru a sorta o listă.
- Utilizați sortat(listă, inversă = Adevărat | Fals, cheie = <funcție>) 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 Geekflare Online Python Compiler.