Python List sort() esimerkkien kanssa

โšก ร„lykรคs yhteenveto

Python list sort() jรคrjestรครค listan elementit paikoilleen oletusarvoisesti nousevaan jรคrjestykseen tai kรครคnteisen parametrin mukaan laskevaan jรคrjestykseen, kun taas valinnainen avainfunktio lajittelee mukautettujen kriteerien, kuten pituuden, tuple-kenttien tai kรคyttรคjรคn mรครคrittรคmien funktioiden, mukaan.

  • ๐Ÿ”˜ Syntaksi: sort()-metodi hyvรคksyy valinnaiset avain- ja kรครคnteisparametrit ja muokkaa alkuperรคistรค listaa luomatta siitรค kopiota.
  • โ˜‘๏ธ Tilausten hallinta: Asettamalla kรครคnteinen parametri arvoksi True, arvot lajitellaan suurimmasta pienimpรครคn oletusarvoisen nousevan jรคrjestyksen sijaan.
  • โœ… Keskeinen parametri: Avainfunktio, kuten len, lajittelee elementit johdetun arvon, kuten merkkijonon pituuden tai tuple-kentรคn, mukaan.
  • ๐Ÿงช lajittelu vs. lajiteltu: sort()-metodi muuttaa listan paikkaa ja palauttaa arvon None, kun taas sorted() palauttaa uuden listan ja sรคilyttรครค alkuperรคisen.
  • ๐Ÿ› ๏ธ Mukautetut kriteerit: Lambda-lausekkeet ja kรคyttรคjรคn mรครคrittรคmรคt funktiot antavat sort()-funktion jรคrjestรครค tupleja, sanakirjoja ja nimettyjรค tupleja minkรค tahansa valitun attribuutin mukaan.
  • ๐Ÿค– Tekoรคlyn tyรถnkulut: Koneoppimisprosessit lajittelevat ennusteita pistemรครคrรคn perusteella ja valitsevat parhaat tulokset ennen sijoitusta tai arviointia.

Python List sort()

Mikรค on sort()-menetelmรค Python?

Sort()-funktio kohdassa Python auttaa lajittelemaan listan nousevaan tai laskevaan jรคrjestykseen. Sitรค voidaan kรคyttรครค numeerisen listan, tuplejen ja merkkijonolistan lajitteluun. Se ei luo erillistรค listaa, vaan muokkaa tai lajittelee alkuperรคisen.

Lajittelumenetelmรคn syntaksi sisรครคn Python

Lajittelufunktiolla on seuraava syntaksi:

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

Lajittelufunktiolla on kaksi valinnaista parametria, nimittรคin:

  • Avain:- Tรคtรค kรคytetรครคn lajittelemaan funktio lajittelukriteerin perusteella.
  • Reverse: โ€“ se ottaa arvon joko true tai false. Jos arvo on true, tรคmรค mukautettu funktio lajittelee listan 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']

Code 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 tuplesta ja mukautetusta funktiosta, joka havainnollistaa, miten lajittelufunktio avainparametreilla auttaa lajittelemaan tuplen 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)]

Code 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 funktio, joka mรครคrittรครค alkion pituuden. Mรครคritettyรค pituutta voidaan kรคyttรครค indeksointiin lajittelufunktiossa. Tรคtรค varten asetamme Lenin Python lajittelufunktion avainparametri.

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

Python Code:

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

Code 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รค sanojen alto ja java pituus on 4, jotka on jรคrjestetty luettelon ensimmรคisiksi ja sitten Guru99, jonka pituus on 6.

Tรคmรค esimerkki havainnollistaa kรครคnteisen parametrin kรคsitettรค lajittelufunktiossa seuraavasti:

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)

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 lajittelemiseen. Tรคssรค on esimerkki:

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)

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

Code 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

Yllรค olevien esimerkkien lรคpikรคymisen jรคlkeen on hyรถdyllistรค vertailla kahta lajittelutyรถkalua suoraan. Ennen kuin eroavaisuudet tiivistetรครคn, tutustutaan Sorted-metodin syntaksiin.

Python Syntaksi:

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

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

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

Code 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 keskeisiรค yhtรคlรคisyyksiรค ja eroja koskevia kohtia:

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

Code 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 tracsujuvuus ja tehokas tiedonhallinta.

UKK

Anna sort()-metodille key=str.lower, esimerkiksi names.sort(key=str.lower). Jokaista merkkijonoa verrataan pienillรค kirjaimilla, joten 'Apple' ja 'banana' ovat aakkosjรคrjestyksessรค isoista kirjaimista riippumatta. Jokaisen elementin alkuperรคinen kirjainkoko sรคilyy lopullisessa lajitellussa listassa.

Kaikkien numeroiden tai merkkijonojen luettelon lajittelu toimii, mutta toisiinsa liittymรคttรถmien tyyppien, kuten kokonaislukujen ja merkkijonojen, sekoittaminen aiheuttaa TypeError-virheen, koska Python ei voi verrata niitรค. Muunna arvot ensin yhdeksi vertailukelpoiseksi tyypiksi tai vรคlitรค avainfunktio, joka palauttaa vertailukelpoiset avaimet.

Python historiallisesti kรคytetty Timsort-lajittelua, joka on yhdistรคmislajittelun ja lisรคyslajittelun hybridi. Versiosta 3.11 lรคhtien tulkki kรคyttรครค Powersortia, Timsortista johdettua varianttia, jossa on รคlykkรครคmpi yhdistรคmiskรคytรคntรถ. Molemmat ovat vakaita ja toimivat pahimmassa tapauksessa ajassa O(n log n).

Kyllรค. sort()-metodi on vakaa, joten vertailukelpoiset elementit sรคilyttรคvรคt alkuperรคisen suhteellisen jรคrjestyksensรค. Tรคmรค antaa sinun lajitella useiden kriteerien mukaan vaiheittain, lajittelemalla vรคhiten tรคrkeรคn avaimen ensin ja tรคrkeimmรคn avaimen viimeiseksi.

Pahimmissa ja keskimรครคrรคisissรค tapauksissa sort()-metodi suoritetaan ajassa O(n log n). Suurimmaksi osaksi jo jรคrjestetyssรค datassa se lรคhestyy aikaa O(n), koska pohjana oleva algoritmi havaitsee ja kรคyttรครค uudelleen olemassa olevia lajiteltuja sarjoja sen sijaan, ettรค lajittelisi ne uudelleen.

Vรคlitรค avain, joka muuntaa jokaisen alkion vertailun aikana, esimerkiksi nums.sort(key=int). Lista lajittelee sitten numeerisen arvon mukaan merkkien sijaan, joten '10' lajittelee oikein '9':n jรคlkeen. Tallennetut elementit pysyvรคt merkkijonoina; vain vertailussa kรคytetรครคn niiden kokonaislukuarvoa.

Lajittelu jรคrjestรครค ennusteet pistemรครคrรคn tai todennรคkรถisyyden mukaan, valitsee k parasta tulosta ranking- ja suositusjรคrjestelmistรค ja jรคrjestรครค tietueet datan valmistelun aikana. Koneoppimisprosessit lajittelevat usein ominaisuusarvoja tai mallien tuloksia ennen arviointia, joten sisรครคnrakennettu sort()-metodi on yleinen esikรคsittelyvaihe.

Kyllรค. GitHub Copilot ja agenttiset tekoรคlyavustajat luovat sort()- ja sorted()-kutsuja, jotka sisรคltรคvรคt avainfunktioita ja lambda-lausekkeita, lyhyestรค kommentista. Ne voivat refaktoroida silmukoita yksittรคisiksi sort-lausekkeiksi, vaikka sinun tulisi silti testata jรคrjestys ja vahvistaa tulos reunatapauksissa.

Tiivistรค tรคmรค viesti seuraavasti: