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: