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