Ce face sorted()
sorted() primește orice colecție și returnează o listă nouă cu elementele în ordine crescătoare. Colecția originală rămâne neschimbată, spre deosebire de metoda list.sort(), care sortează lista pe loc.
Cu key dai o funcție care calculează, pentru fiecare element, valoarea după care se sortează (lungimea, un câmp dintr-un dicționar, textul cu litere mici). Cu reverse=True ordinea devine descrescătoare. Sortarea este stabilă: elementele egale își păstrează ordinea inițială.
Parametri
| Parametru | Descriere |
|---|---|
iterabil |
Colecția de sortat: listă, tuplu, text, dicționar (se sortează cheile), mulțime. |
key |
Opțional. O funcție aplicată fiecărui element pentru a obține criteriul de sortare. |
reverse |
Opțional. True pentru ordine descrescătoare. |
Ce returnează
O listă nouă, sortată.
Exemple
Exemplul 1: Numere și texte
note = [7, 10, 5, 9]
print(sorted(note))
print(sorted(note, reverse=True))
print(note)
print(sorted("python"))
Rezultat
[5, 7, 9, 10]
[10, 9, 7, 5]
[7, 10, 5, 9]
['h', 'n', 'o', 'p', 't', 'y']
Exemplul 2: Sortare după o cheie
orase = ["Iași", "Cluj-Napoca", "Arad", "Brașov"]
print(sorted(orase, key=len))
elevi = [{"nume": "Ana", "media": 9.5}, {"nume": "Mihai", "media": 8.7}, {"nume": "Ioana", "media": 9.8}]
for e in sorted(elevi, key=lambda e: e["media"], reverse=True):
print(e["nume"], e["media"])
Rezultat
['Iași', 'Arad', 'Brașov', 'Cluj-Napoca']
Ioana 9.8
Ana 9.5
Mihai 8.7
Exemplul 3: Majuscule și diacritice
Implicit, sortarea compară codurile caracterelor: majusculele vin înaintea literelor mici, iar literele cu diacritice ajung la final. key=str.lower rezolvă problema majusculelor.
cuvinte = ["mere", "Zmeură", "banane", "ăsta"]
print(sorted(cuvinte))
print(sorted(cuvinte, key=str.lower))
Rezultat
['Zmeură', 'banane', 'mere', 'ăsta']
['banane', 'mere', 'Zmeură', 'ăsta']
Greșeli frecvente
- Scrii
lista = lista.sort()și lista devineNone.list.sort()sortează pe loc și returneazăNone;sorted()returnează lista nouă. - Sortezi o listă cu tipuri amestecate (
[3, "a"]) și primeștiTypeError: '<' not supported.
Comenzi înrudite
list.sort(): Sortează o listă pe loc, cu criteriu și ordine opționale.reversed(): Parcurge o secvență (listă, text, tuplu, range) de la sfârșit la început.lambda: Creează o funcție mică, fără nume, scrisă pe un singur rând.min() și max(): Returnează cel mai mic sau cel mai mare element dintr-o colecție sau dintre mai multe valori.