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.