Python List sort() cu Exemple

⚡ Rezumat inteligent

Python Funcția list sort() aranjează elementele unei liste la locul lor, crescător în mod implicit sau descrescător prin parametrul reverse, în timp ce o funcție cheie opțională sortează după criterii personalizate, cum ar fi lungimea, câmpurile de tuplu sau funcțiile definite de utilizator.

  • 🔘 Sintaxă: Metoda sort() acceptă parametri opționali de tip key și reverse și modifică lista originală fără a crea o copie.
  • ☑️ Controlul comenzilor: Setarea parametrului reverse la True sortează valorile de la cea mai mare la cea mai mică în loc de ordinea crescătoare implicită.
  • Parametru cheie: O funcție cheie, cum ar fi len, sortează elementele după o valoare derivată, cum ar fi lungimea unui șir de caractere sau un câmp de tuplu.
  • 🧪 sortare vs. sortat: Metoda sort() modifică lista la locul ei și returnează None, în timp ce sorted() returnează o listă nouă și păstrează originalul.
  • 🛠️ Criterii personalizate: Expresiile Lambda și funcțiile definite de utilizator permit funcției sort() să ordoneze tupluri, dicționare și tupluri denumite după orice atribut ales.
  • 🤖 Fluxuri de lucru bazate pe inteligența artificială: Conductele de învățare automată sortează predicțiile după scor și selectează cele mai bune rezultate înainte de clasificare sau evaluare.

Python Sortare listă()

În ce este metoda sort(). Python?

Funcția sort() din Python ajută la sortarea unei liste în ordine crescătoare sau descrescătoare. Poate fi folosit pentru sortarea unei liste numerice, a tuplurilor și a unei liste de șiruri de caractere. Nu creează o listă separată, ci modifică sau sortează originalul.

Sintaxa metodei Sort în Python

Funcția de sortare are următoarea sintaxă:

List.sort(key=…, reverse=…)

Funcția de sortare are doi parametri opționali, și anume:

  • Cheie:- Aceasta este folosită pentru a sorta o funcție pe baza unui criteriu de sortare.
  • Reverse– preia valoarea fie „true”, fie „false”. Dacă este „true”, această funcție personalizată sortează lista în ordine descrescătoare.

Sortarea unei liste în ordine crescătoare utilizând metoda Sort în Python

In Python, funcția de sortare, în mod implicit, sortează orice listă în ordine crescătoare. O listă în ordine crescătoare are cea mai mică valoare în partea stângă, iar cea mai mare valoare vine în partea dreaptă.

Exemplu:

Python cod:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

ieșire:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Explicaţie:

  • Lista de mai sus este o listă de șiruri definite aleatoriu.
  • Funcția de sortare a Python ajută la sortarea listei aleatoare în ordine crescătoare, cu lungimea cea mai mică a cuvântului în partea stângă și cea mai mare lungime a cuvântului în partea dreaptă.

Sortarea unei liste în ordine descrescătoare

Funcția de sortare permite, de asemenea, sortarea unei liste în ordine descrescătoare. Poate fi definită ca ordine unde lista începe cu cea mai mare valoare și se termină cu cea mai mică valoare.

Parametrul invers al funcției de sortare este atribuit ca adevărat pentru a obține o listă sortată în ordine descrescătoare.

Să ne uităm la exemplul de mai jos:

Python cod:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

ieșire:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Notă: Asigurați-vă că alocarea cuvântului „True” la parametrul invers începe cu „T” majuscul pentru a evita orice eroare de timp de rulare.

Sortarea unei liste de tupluri folosind metoda Sort in Python

Python Tupluri sunt colecții de elemente imuabile care urmează o succesiune ordonată. PythonFuncția de sortare a lui poate fi folosită pentru a sorta o listă de tupluri folosind o funcție personalizată și o expresie lambda.

O funcție personalizată poate fi creată fără nume și reprezentată printr-o expresie lambda. Sintaxa pentru expresia Lambda este următoarea:

Sintaxă:

Lambda arguments: expression

Sintaxa de mai sus este echivalentă cu codul python de mai jos:

def name (arguments):
return expression

Iată un exemplu de tuplu și funcție personalizată pentru a ilustra modul în care o funcție de sortare cu parametri cheie ajută la sortarea elementelor dintr-un tuplu:

Python cod:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

ieșire:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Explicaţie:

  • Parametrul invers este definit ca adevărat pentru a sorta tuplu în ordine descrescătoare.
  • Funcția personalizată preia al doilea element al tuplului.
  • Aceasta este folosită ca cheie a funcției de sortare.

Să ne uităm la exemplul de mai jos care utilizează expresia lambda:

Python cod:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

ieșire:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Explicaţie:

  • Expresia lambda vă ajută să sortați elementele tuplului de la mare la scăzut cu cheia ca al doilea element al tuplului.
  • Programul va verifica cea mai mare valoare a celui de-al doilea element al tuplului.

Sortarea elementelor din listă folosind Len ca parametru cheie

Len este o funcție încorporată care determină lungimea elementului. Lungimea determinată poate fi utilizată pentru indexare în funcția de sortare. Pentru a face acest lucru, atribuim Len Python parametrul cheie al funcției de sortare.

Următoarele Python codul ilustrează modul de utilizare a funcției Len cu funcția de sortare.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

ieșire:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Explicaţie:

Sortarea elementelor din listă folosind Len

  • Lungimea elementului devine un index pentru parametrul cheie pentru a aranja lista în ordine crescătoare.
  • Funcția Len estimează lungimea fiecărui element prezent în lista de bază.
  • Păstrează cel mai scurt element în partea stângă și cel mai mare element în partea dreaptă.
  • Aici, cuvintele alto și java au lungimi de 4, care sunt aranjate primele în listă, urmate de Guru99, care are o lungime de 6.

Acest exemplu ilustrează conceptul parametrului invers în funcția de sortare, așa cum se arată mai jos:

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

ieșire:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Sortarea elementelor din listă folosind funcția definită de utilizator ca parametru cheie

De asemenea, puteți utiliza o funcție definită de utilizator ca parametru cheie pentru a sorta o listă. Iată un exemplu:

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

ieșire:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Explicaţie:

  • Este creată o funcție definită de utilizator pentru a returna anul
  • Parametrul cheie ia ca criteriu o funcție definită de utilizator.
  • Funcția de sortare va aranja lista în ordine crescătoare pe baza valorii elementului „an”.

Diferența dintre metoda de sortare și metoda sortată în Python

După parcurgerea exemplelor de mai sus, este util să comparăm direct cele două instrumente de sortare. Înainte de a rezuma diferențele, să înțelegem sintaxa metodei Sorted.

Python Sintaxă:

sorted (list_name, reverse=…., key=..)

Code Explicaţie:

  • Funcția sortată sortează lista fie în ordine crescătoare, fie în ordine descrescătoare.
  • Funcția acceptă trei parametri, dintre care doi parametri sunt de tip opțional și un parametru este de tipul necesar.
  • Parametrul list_name este necesar când se utilizează metoda Sorted.
  • Metoda Sorted poate lua ca intrare orice tip de listă iterabilă.
  • Parametrii cheie și parametrii inversi sunt parametri opționali conform metodei sortate în Python.

Iată un exemplu de utilizare a funcției de sortare și sortare în Python:

Python cod:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

ieșire:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Explicaţie:

  • Lista originală este transmisă ca parametru necesar pentru funcția sortată.
  • Metoda Sorted returnează o nouă listă în afară de lista originală.
  • Deoarece nu sunt transferați parametri suplimentari metodei sortate, noua listă este sortată implicit în ordine crescătoare.
  • Funcția de sortare nu face nicio listă nouă.

Următoarele sunt punctele privind principalele asemănări și deosebiri:

Funcție sortată Funcția de sortare
Funcția sortată în Python este o funcție încorporată care ia list_name ca parametru necesar. Funcția de sortare nu ia lista originală ca parametru.
Metoda sortată returnează o nouă listă Funcția de sortare nu returnează o listă nouă
Funcția sortată ar trebui utilizată pentru liste iterabile Funcția de sortare ar trebui utilizată pentru listele care nu pot fi iterabile.
Nu modifică lista originală și ne permite să păstrăm datele originale. Funcția de sortare modifică funcția originală și, prin urmare, ocupă mai puțin spațiu de memorie

Când să utilizați metoda sortată sau metoda sortării?

Să luăm un exemplu care necesită sortarea datelor despre curse. Programul folosește numărul dosarului și timpul necesar în secunde pentru a termina cursa.

Python cod:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

ieșire:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Explicaţie:

  • Lista de bază este sortată folosind atât funcția de sortare, cât și funcția sortată.
  • Lista de bază se pierde atunci când este aplicată funcția de sortare.
  • Funcția de sortare nu trebuie aplicată setului de date original. Ar trebui utilizat atunci când există o versiune de copie a setului de date original.
  • Funcția Sorted păstrează lista originală. Nu îl depășește.
  • Aceasta oferă mai bine tracebilitate și gestionare eficientă a datelor.

Întrebări frecvente

Transmiteți key=str.lower metodei sort(), de exemplu names.sort(key=str.lower). Fiecare șir este comparat cu litere mici, deci „Apple” și „banana” sunt ordonate alfabetic, indiferent de scrierea cu majuscule. Minuscula originală a fiecărui element este păstrată în lista sortată finală.

Sortarea unei liste cu toate numerele sau toate șirurile funcționează, dar amestecarea tipurilor fără legătură, cum ar fi numerele întregi și șirurile, generează o eroare TypeError, deoarece Python nu le pot compara. Convertiți mai întâi valorile într-un tip comparabil sau transmiteți o funcție cheie care returnează chei comparabile.

Python a folosit în mod tradițional Timsort, un hibrid între sortarea prin merge și sortarea prin inserție. Începând cu versiunea 3.11, interpretorul folosește Powersort, o variantă derivată din Timsort cu o politică de îmbinare mai inteligentă. Ambele sunt stabile și rulează în timp O(n log n) în cel mai rău caz.

Da. Metoda sort() este stabilă, așadar elementele care se compară la fel își păstrează ordinea relativă inițială. Aceasta vă permite să sortați după mai multe criterii în etape, sortând mai întâi după cheia cea mai puțin importantă și după cea mai importantă la urmă.

Metoda sort() rulează în timp O(n log n) în cele mai defavorabile cazuri și în cele medii cazuri. Pe datele care sunt deja în mare parte ordonate, se apropie de O(n), deoarece algoritmul subiacent detectează și reutilizează rulările sortate existente în loc să le resorteze.

Transmiteți o cheie care convertește fiecare element în timpul comparației, de exemplu nums.sort(key=int). Lista ordonează apoi după valoarea numerică, nu după caracter, astfel încât „10” sortează corect după „9”. Elementele stocate rămân ca șiruri de caractere; doar comparația folosește valoarea lor întreagă.

Sortarea aranjează predicțiile după scor sau probabilitate, selectează primele k rezultate în sistemele de clasificare și recomandare și ordonează înregistrările în timpul pregătirii datelor. Conductele de învățare automată sortează frecvent valorile caracteristicilor sau rezultatele modelului înainte de evaluare, așadar metoda sort() încorporată este o etapă comună de preprocesare.

Da. GitHub Copilot și asistenții AI agențici generează apeluri sort() și sorted(), inclusiv funcții cheie și expresii lambda, dintr-un comentariu scurt. Aceștia pot refactoriza buclele în instrucțiuni de sortare unice, deși ar trebui să testați ordinea și să confirmați rezultatul în cazurile limită.

Rezumați această postare cu: