Kuinka lajitella luettelot Pythonissa

How Sort Lists Python



Tämä artikkeli kattaa oppaan Pythonin luetteloiden lajittelusta. Python -luettelo -objekti on kokoelma yhtä tai useampaa pilkulla erotettua kohdetta. Se on toistettava objekti, ja sen elementteihin pääsee käsiksi iteroimalla luettelon silmukkalausekkeiden ja muiden lausekkeiden avulla. Voit lajitella Python -luettelon lajittelu- ja lajiteltujen menetelmien avulla, molemmat selitetään artikkelissa. Kaikki tämän artikkelin koodinäytteet testataan Python 3.9.5: llä Ubuntu 21.04: ssä.

Lajittelutapa

Lajittelumenetelmä lajittelee luettelon paikan päällä. Toisin sanoen, se muuttaa luettelo -objektia, jonka aiot lajitella ja järjestää sen elementin uudelleen. Jos et tarvitse alkuperäistä luetteloa etkä halua, että luettelo muuttaa elementtien järjestystä paikallaan, tämä on Pythonin tehokkain tapa lajitella luettelo. Harkitse tätä esimerkkiä:







the= [2, 8, 6, 4]

.järjestellä()

Tulosta (the)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:



[2, 4, 6, 8]

Koodinäytteen ensimmäinen lause määrittelee luettelon. Seuraavaksi lajittelumenetelmää kutsutaan luetteloon. Kun tulostat luettelon, näet, että alkuperäisen luettelon järjestystä on muutettu.



Oletuksena Python lajittelee luettelon nousevaan järjestykseen. Jos haluat lajitella luettelon laskevassa järjestyksessä, käytä käänteistä menetelmää alla olevan koodinäytteen mukaisesti:





the= [2, 8, 6, 4]

.järjestellä()

.käänteinen()

Tulosta (the)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:

[8, 6, 4, 2]

Käänteinen menetelmä muuttaa myös Python-luettelon paikallaan luomatta uutta luetteloa.



Jos luettelosi sisältää merkkijonoelementtejä, lajittelumenetelmän kutsuminen järjestää sen aakkosjärjestykseen, jossa symbolit ja numerot on järjestetty ensin. Katso alla oleva koodinäyte:

the= ['s', '', 'Kanssa', '4', '#']

.järjestellä()
Tulosta (the)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:

['#', '4', '', 's', 'Kanssa']

Voit myös käyttää käänteistä menetelmää luettelossa, joka sisältää merkkijonoelementtejä.

the= ['s', '', 'Kanssa', '4', '#']

.järjestellä()

.käänteinen()

Tulosta (the)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:

['Kanssa', 's', '', '4', '#']

Lajiteltu menetelmä

Lajiteltu menetelmä lajittelee myös Python -luettelon samalla tavalla kuin lajittelumenetelmä. Alkuperäisen luettelon muokkaamisen sijaan se palauttaa kuitenkin uuden luettelon, jotta alkuperäinen luettelo jätetään koskemattomaksi, jos haluat käyttää sitä uudelleen. Harkitse alla olevaa koodia:

luettelo 1= ['s', '', 'Kanssa', '4', '#']

luettelo 2= lajiteltu(luettelo 1)

Tulosta (luettelo 1,luettelo 2)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:

['s', '', 'Kanssa', '4', '#'] ['#', '4', '', 's', 'Kanssa']

Tuloksesta näkyy, että lista1 on ehjä ja luettelo2 sisältää nyt lajiteltuja elementtejä. Voit myös käyttää listan2 käänteistä menetelmää muuttaaksesi sen tilausmenetelmää.

Käänteinen argumentti

Voit käyttää käänteistä argumenttia vaihtoehtona käänteistoiminnolle sekä lajittelu- että lajittelumenetelmissä saadaksesi lajitellun luettelon laskevaan järjestykseen. Anna vain todellinen arvo muuttaaksesi lajittelujärjestystä:

luettelo 1= ['s', '', 'Kanssa', '4', '#']

luettelo 2= lajiteltu(luettelo 1,käänteinen=Totta)

Tulosta (luettelo 1,luettelo 2)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:

['s', '', 'Kanssa', '4', '#'] ['Kanssa', 's', '', '4', '#']

Avaintoiminnon käyttäminen oman logiikan määrittämiseen luettelon elementtien lajittelua varten

Sekä lajittelumenetelmissä että lajiteltuissa menetelmissä voit määrittää lisäavainargumentin, joka ottaa kutsuttavan funktion arvoksi. Tälle avainargumentille voidaan määrittää olemassa oleva toiminto sisäänrakennetuista Python-moduuleista tai voit toimittaa oman funktion mukautetulla logiikalla. Katso alla oleva koodinäyte:

luettelo 1= ['abcde', 'xyz', 'ijkl']

luettelo 2= lajiteltu(luettelo 1,näppäintä=len)

Tulosta (luettelo 1,luettelo 2)

luettelo 1.järjestellä(näppäintä=len)

Tulosta (luettelo 1)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:

['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']

['xyz', 'ijkl', 'abcde']

Koodinäyte kuvaa avainargumentin käyttöä sekä lajitellussa että lajittelumenetelmässä. Siihen syötettyä toimintoa kutsutaan len, joka määrittää merkkijonokohteen tai toistettavan pituuden. Funktion tai kutsutun pitäisi alun perin ottaa vain yksi argumentti. Määrität sen avainargumentille ilman hakasulkeita. Avainargumenttiin toimitettava kutsuttava funktio kutsutaan luettelon jokaiseen elementtiin. Tämän kutsuttavan menetelmän palauttamia arvoja käytetään sitten avaimena luettelon lajittelussa. Näin ollen len -funktion toimittaminen avainargumenttiin lajittelee luettelon elementit niiden pituuden järjestyksessä eli lyhyimmästä pisimpään. Kuten aiemmin todettiin, voit aina käyttää käänteistä menetelmää kääntääksesi lajittelumenetelmän.

Voit myös käyttää omaa mukautettua toimintoa tai yksirivisiä lambda-toimintoja, jotka palauttavat yksittäisen lausekkeen arvon. Katso alla olevaa koodinäytettä, jossa luettelossa on hedelmälaatikoiden nykyinen luettelo:

luettelo 1= [('mango', 99), ('oranssi', 51), ('banaani', 76)]

luettelo 1.järjestellä(näppäintä=lambdainventaario: inventaario[1])

Tulosta (luettelo 1)

Yllä olevan koodinäytteen suorittamisen jälkeen saat seuraavan tuloksen:

[('oranssi', 51), ('banaani', 76), ('mango', 99)]

Lambda -funktio toimitetaan argumenttivarastolla, joka on luettelon jokainen elementti tuple -muodossa. Sitten se palauttaa jokaisen tuplen toisen elementin avaimena (indeksissä 1). Lajittelufunktio lajittelee sitten kaikki tuplet toisen elementin mukaan nousevaan järjestykseen. Voit myös käyttää käänteistoimintoa tai käänteistä argumenttia lopputuloksessa kääntääksesi lajittelujärjestyksen.

Johtopäätös

Nämä ovat joitakin tapoja, joilla voit lajitella toistettavan luettelon sisällön Pythonissa. Avainargumentin avulla voit kirjoittaa oman mukautetun lajittelulogiikan, joka soveltuu sovelluksille, joilla voi olla erilaisia ​​tarpeita kuin sisäänrakennetuilla lajittelumenetelmillä.