Python List sort() esimerkkien kanssa

Mikä on sort()-menetelmä Python?

Lajittele toiminto sisään Python auttaa lajittelemaan luettelon nousevaan tai laskevaan järjestykseen. Sitä voidaan käyttää numeroluettelon, monikot ja merkkijonoluettelon lajitteluun. Se ei luo erillistä luetteloa, vaan muokkaa tai lajittelee alkuperäistä.

Lajittelumenetelmän syntaksi sisään Python

Lajittelutoiminnolla on seuraava alla lueteltu syntaksi: –

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

Lajittelutoiminnolla on kaksi valinnaista parametria, jotka on lueteltu alla: –

  • Avain:- Tätä käytetään lajittelemaan funktio lajittelukriteerin perusteella.
  • Reverse: – se ottaa arvon joko tosi tai epätosi. Jos tosi, tämä mukautettu funktio lajittelee luettelon laskevaan järjestykseen.

Listan lajittelu nousevaan järjestykseen Lajittele sisään -menetelmällä Python

In Python, lajittelutoiminto lajittelee oletusarvoisesti kaikki luettelot nousevaan järjestykseen. Nousevassa järjestyksessä olevan luettelon vasemmalla puolella on pienin arvo ja oikealla puolella suurin arvo.

Esimerkiksi:

Python koodi:

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

lähtö:

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

Koodin selitys:

  • Yllä oleva luettelo on satunnaisesti määritetty merkkijonoluettelo.
  • Lajittelutoiminto Python auttaa lajittelemaan satunnaista listaa nousevaan järjestykseen, jolloin sanan pienin pituus on vasemmalla ja suurin sana oikealla.

Listan lajittelu laskevaan järjestykseen

Lajittelutoiminto mahdollistaa myös luettelon lajittelun laskevaan järjestykseen. Se voidaan määritellä tilaukseksi jossa luettelo alkaa suurimmalla arvolla ja päättyy pienimpään arvoon.

Lajittelutoiminnon käänteinen parametri määritetään arvoksi tosi, jotta luettelo lajitellaan laskevassa järjestyksessä.

Katsotaanpa alla olevaa esimerkkiä: -

Python koodi:

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)

lähtö:

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

Huomautus: Varmista, että sanan "True" määrittäminen käänteiselle parametrille alkaa isolla T-kirjaimella, jotta vältytään ajonaikaisilta virheiltä.

Tuple-luettelon lajitteleminen lajittelumenetelmällä Python

Python tuples ovat kokoelmat muuttumattomia elementtejä, jotka seuraavat järjestettyä sekvenssiä. Pythonn lajittelufunktiota voidaan käyttää monikkoluettelon lajittelemiseen mukautetun funktion ja lambda-lausekkeen avulla.

Mukautettu funktio voidaan luoda ilman nimeä ja esittää lambda-lausekkeella. Seuraava on Lambda-lausekkeen syntaksi: –

Syntaksi:

Lambda arguments: expression

Yllä oleva syntaksi vastaa alla olevaa python-koodia:

def name (arguments):
return expression

Tässä on esimerkki monista ja mukautetusta funktiosta, joka havainnollistaa, kuinka lajittelutoiminto avainparametreineen auttaa lajittelemaan monikon elementtejä:-

Python koodi:

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)

lähtö:

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

Koodin selitys:

  • Käänteinen parametri on määritelty tosi, jotta monikko lajitellaan laskevaan järjestykseen.
  • Mukautettu funktio ottaa monikon toisen elementin.
  • Tätä käytetään lajittelutoiminnon avaimena.

Katsotaanpa alla olevaa esimerkkiä, joka käyttää lambda-lauseketta:

Python koodi:

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)

lähtö:

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

Selitys:

  • Lambda-lauseke auttaa sinua lajittelemaan monikon elementit korkeasta matalaan näppäimellä monikon toisena elementtinä.
  • Ohjelma tarkistaa monikon toisen elementin suurimman arvon.

Listan kohteiden lajittelu käyttämällä Leniä avainparametrina

Len on sisäänrakennettu toiminto, joka määrittää esineen pituuden. Määritettyä pituutta voidaan käyttää lajittelutoiminnon indeksointiin. Tätä varten määritämme Lenin Python lajittelufunktion avainparametri.

Seuraavat Python koodi havainnollistaa kuinka Len-toimintoa käytetään lajittelutoiminnon kanssa.

Python Koodi:

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

lähtö:

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

Koodin selitys:

Listan kohteiden lajittelu Lenin avulla

  • Elementin pituudesta tulee indeksi avainparametrille listan järjestämiseksi nousevaan järjestykseen.
  • Len-funktio arvioi jokaisen perusluettelossa olevan elementin pituuden.
  • Se pitää lyhimmän elementin vasemmalla puolella ja suurimman elementin oikealla puolella.
  • Tässä sanat alto ja java ovat pituudeltaan 4, jotka on järjestetty ensimmäiseksi luettelossa, ja sen jälkeen Guru99, jonka pituus on 6.

Tämä esimerkki havainnollistaa käänteisen parametrin käsitettä lajittelufunktiossa alla esitetyllä tavalla: –

Python Koodi:

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

lähtö:

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

Listan kohteiden lajittelu käyttämällä käyttäjän määrittämää toimintoa avainparametrina

Voit myös käyttää käyttäjän määrittämää funktiota avainparametrina luettelon lajittelussa. Tässä on esimerkki: -

Python Koodi:

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)

lähtö:

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

Koodin selitys:

  • Luodaan käyttäjän määrittämä funktio palauttamaan vuoden
  • Avainparametri ottaa käyttäjän määrittämän funktion kriteeriksi.
  • Lajittelutoiminto järjestää listan nousevaan järjestykseen elementin “year” arvon perusteella.

Lajittelutavan ja lajittelutavan välinen ero Python

Ennen kuin eroista tehdään yhteenveto, meidän on ymmärrettävä Lajiteltu-menetelmän syntaksi.

Python Syntaksi:

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

Koodin selitys:

  • Lajiteltu toiminto lajittelee luettelon joko nousevaan tai laskevaan järjestykseen.
  • Funktio hyväksyy kolme parametria, joista kaksi on valinnaista tyyppiä ja yksi parametri on pakollista tyyppiä.
  • Parametri listan_nimi vaaditaan käytettäessä lajiteltua menetelmää.
  • Lajiteltu menetelmä voi ottaa syötteeksi minkä tahansa iteroitavan luettelon.
  • Avainparametrit ja käänteiset parametrit ovat valinnaisia ​​parametreja lajittelumenetelmässä Python.

Tässä on esimerkki lajittelu- ja lajittelutoiminnon käytöstä Python kuten alla näkyy: -

Python koodi:

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

lähtö:

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

Koodin selitys:

  • Alkuperäinen luettelo välitetään pakollisena parametrina järjestetylle funktiolle.
  • Lajiteltu menetelmä palauttaa uuden luettelon alkuperäisen luettelon lisäksi.
  • Koska lajiteltuun menetelmään ei välitetä lisäparametreja, uusi luettelo lajitellaan oletusarvoisesti nousevassa järjestyksessä.
  • Lajittelutoiminto ei tee uutta luetteloa.

Seuraavassa on huomioita tärkeimmistä yhtäläisyyksistä ja eroista: –

Lajiteltu toiminto Lajittelutoiminto
Lajiteltu toiminto sisään Python on sisäänrakennettu funktio, joka ottaa listan_nimi pakollisena parametrina. Lajittelutoiminto ei ota alkuperäistä luetteloa parametrina.
Lajiteltu menetelmä palauttaa uuden luettelon Lajittelutoiminto ei palauta uutta luetteloa
Lajiteltua funktiota tulisi käyttää iteroitavissa listoissa Lajittelutoimintoa tulisi käyttää ei-iteroitavissa listoissa.
Se ei muuta alkuperäistä luetteloa ja antaa meille mahdollisuuden säilyttää alkuperäiset tiedot. Lajittelutoiminto muuttaa alkuperäistä toimintoa ja vie siten vähemmän muistitilaa

Milloin lajittelutapaa tai lajittelutapaa kannattaa hyödyntää?

Otetaan esimerkki, joka edellyttää kilpailutietojen lajittelua. Ohjelma käyttää ruokalappunumeroa ja sekunneissa kuluvaa aikaa kilpailun loppuun saattamiseksi.

Python koodi:

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)

lähtö:

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

Koodin selitys:

  • Perusluettelo lajitellaan sekä lajittelu- että lajittelufunktiolla.
  • Perusluettelo katoaa, kun lajittelutoimintoa käytetään.
  • Lajittelutoimintoa ei pitäisi soveltaa alkuperäiseen tietojoukkoon. Sitä tulee käyttää, kun alkuperäisestä tietojoukosta on kopioversio.
  • Lajiteltu-toiminto säilyttää alkuperäisen luettelon. Se ei ohita sitä.
  • Tämä tarjoaa paremman jäljitettävyyden ja tehokkaan tiedonhallinnan.

Yhteenveto

  • Lajittelutoiminto auttaa lajittelemaan numeerista ja merkkijonoluetteloa pythonissa.
  • Se voi myös auttaa lajittelussa.
  • Reverse ja key ovat funktion valinnaisia ​​parametreja.
  • Jos tarvitaan erillinen lista ja samanaikaisesti alkuperäinen lista, niin muuten on käytettävä lajiteltua toimintoa, lajittelutoimintoa on käytettävä optimoidun muistin käytön saavuttamiseksi.