Python List sort() cu Exemple

รŽn ce este metoda sort(). Python?

Funcศ›ia de sortare 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. Nu creeazฤƒ o listฤƒ separatฤƒ, ci modificฤƒ sau sorteazฤƒ originalul.

Sintaxa metodei Sort รฎn Python

Funcศ›ia de sortare are urmฤƒtoarea sintaxฤƒ, aศ™a cum este listatฤƒ mai jos: โ€“

List.sort(key=โ€ฆ, reverse=โ€ฆ)

Funcศ›ia de sortare are doi parametri opศ›ionali, ศ™i anume cei enumeraศ›i mai jos: โ€“

  • Cheie:- Aceasta este folositฤƒ pentru a sorta o funcศ›ie pe baza unui criteriu de sortare.
  • Reverse: โ€“ ia valoarea ca fiind adevฤƒratฤƒ sau falsฤƒ. Dacฤƒ este adevฤƒratฤƒ, 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']

Explicaศ›ia codului:

  • 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. Urmฤƒtoarea este sintaxa pentru expresia Lambda: โ€“

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)]

Explicaศ›ia codului:

  • 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 articolului. Lungimea determinatฤƒ poate fi utilizatฤƒ pentru indexare รฎn funcศ›ia de sortare. Pentru a face acest lucru, รฎi atribuim lui 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 Cod:

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']

Explicaศ›ia codului:

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 primul รฎn listฤƒ, urmate de Guru99, care are o lungime de 6.

Acest exemplu ilustreazฤƒ conceptul de parametru invers รฎn funcศ›ia de sortare, aศ™a cum se aratฤƒ mai jos: โ€“

Python Cod:

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 Cod:

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}]

Explicaศ›ia codului:

  • 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

รŽnainte de a rezuma diferenศ›ele, sฤƒ รฎnศ›elegem sintaxa metodei Sorted.

Python Sintaxฤƒ:

sorted (list_name, reverse=โ€ฆ., key=..)

Explicaศ›ia codului:

  • 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 dupฤƒ cum se aratฤƒ mai jos: -

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

Explicaศ›ia codului:

  • 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 asemฤƒnฤƒrile ศ™i diferenศ›ele cheie: -

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)]

Explicaศ›ia codului:

  • 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.
  • Acest lucru oferฤƒ o trasabilitate mai bunฤƒ ศ™i un management eficient al datelor.

Concluzie

  • Funcศ›ia de sortare ajutฤƒ la sortarea unei liste numerice ศ™i de ศ™iruri รฎn python.
  • De asemenea, poate ajuta la sortarea tuplurilor.
  • Reverse ศ™i key sunt parametri opศ›ionali ai funcศ›iei.
  • Dacฤƒ este nevoie de a avea o listฤƒ separatฤƒ ศ™i de a avea simultan lista originalฤƒ, atunci funcศ›ia sortatฤƒ trebuie utilizatฤƒ altfel, funcศ›ia de sortare trebuie utilizatฤƒ pentru a obศ›ine o utilizare optimizatฤƒ a memoriei.

Rezumaศ›i aceastฤƒ postare cu: