Luo silmukoita laskureilla Pythonin Enumerate -toiminnon avulla

Use Enumerate Function Python Create Loops With Counters



Tämä artikkeli selittää Pythonin vakiomoduulikirjastossa olevan luettelointitoiminnon käytön. Enumerate -toiminnon avulla voit määrittää indeksin tai laskun minkä tahansa toistettavan objektin elementeille. Voit sitten käyttää niihin lisää logiikkaa, koska sinulla on pääsy sekä arvoihin että niihin laskettuun määrään.

Syntaksi ja perusesimerkki

Jos olet käyttänyt a -silmukkaa muilla ohjelmointikielillä, erityisesti C -kielellä ja muilla kielillä, joilla on C -tyylisyntaksi, olet ehkä määrittänyt silmukan aloitusindeksin. Tässä on, miltä for -silmukka näyttää C: llä ja muilla kielillä, joilla on samanlainen syntaksi:







varten (inti= 0;i< 10;i++)

{

printf ('%d n'',i);

}

Silmukkalauseke alustaa muuttujan, jonka arvo on nolla, tarkistaa, että se on pienempi kuin kynnys, ja lisää sitä yhdellä lukumäärällä silmukkalohkon logiikan arvioinnin jälkeen (jos pysäytysehto täyttyy). Tällä tavalla voit käyttää hakemistoa ja määrittää sen kaikille silmukkalohkossa viitattuille objekteille. Vertailun vuoksi tässä on, miltä for -silmukka, jolla on sama tulos, näyttää Pythonissa:



vartenisisään valikoima(0, 10):

Tulosta (i)

Pythonin aluefunktion avulla voit määrittää numeroaluejärjestyksen, jonka oletusvaihe on 1. Voit muuttaa vaiheen arvoa antamalla kolmannen argumentin. Aluefunktion toista argumenttia käytetään pysäytystilan kynnyksen asettamiseen. Molemmat koodinäytteet tuottavat seuraavan tuloksen:



0

1

2

3

4

5

6

7

8

9

Nämä silmukat toimivat hyvin, jos haluat vain luoda jonkin numerosarjan ja liittää ne johonkin logiikkaan silmukkalausekkeen sisällä. Sinun on kuitenkin ehkä käytettävä toista sisäkkäistä silmukkaa tai tuotto -funktiota millä tahansa toistettavalla tyypillä, jotta voit määrittää niille jonkinlaisen seurattavan määrän. Luettelomenetelmän avulla on helppo määrittää indeksejä iterabelleille yhdessä lausekkeessa, jolloin useiden sisäkkäisten silmukoiden suorittaminen ei ole tarpeen. Katsokaa tätä koodinäytettä:





numeroita= ['nolla', 'yksi', 'kaksi', 'kolme', 'neljä', 'viisi']

luetellut_numerot= lueteltu(numeroita)

vartenindeksi,kohdesisäänluetellut_numerot:

Tulosta (indeksi,kohde)

Ensimmäinen lause määrittelee uuden muuttujan nimeltä luvut ja määrittää sille toistettavan (luettelotyypin). Toinen lause näyttää luettelointitoiminnon käytön, jos annat sille toistettavan pakollisen argumentin. Kolmas lause muuntaa enumerated_numbers -muuttujan luettelotyyppiseksi objektiksi. Enumerate -funktio luo oletuksena enumerate -tyyppisen objektin eikä toistettavan tyypin, joten se on muunnettava. Kun olet suorittanut yllä mainitun koodinäytteen, saat seuraavan tuloksen:

[(0, 'nolla'), (1, 'yksi'), (2, 'kaksi'), (3, 'kolme'), (4, 'neljä'), (5, 'viisi')]

Enumerate -funktio määrittää laskennan jokaiselle iteroitavan tyypin elementille ja luo kortteja, joissa on pariliitosarvoja. Oletuksena laskenta alkaa nollasta.



Nyt kun olet määrittänyt numeron jokaiselle elementille toistettavassa muodossa, voit helposti kiertää sen kirjoittamatta sisäkkäisiä lausekkeita:

numeroita= ['nolla', 'yksi', 'kaksi', 'kolme', 'neljä', 'viisi']

luetellut_numerot= lueteltu(numeroita)

vartenindeksi,kohdesisäänluetellut_numerot:

Tulosta (indeksi,kohde)

Yllä määritetty koodinäyte tuottaa seuraavan tuloksen:

0 nolla

1 yksi

2 kaksi

3 kolme

4 neljä

5 viisi

Voit lyhentää koodia käyttämällä luettelointitoimintoa, kuten alla olevassa esimerkissä:

numeroita= ['nolla', 'yksi', 'kaksi', 'kolme', 'neljä', 'viisi']

vartenindeksi,kohdesisään lueteltu(numeroita):

Tulosta (indeksi,kohde)

Enumerate -toiminnon käyttäminen eri aloitusindeksin kanssa

Enumerate -funktio sisältää valinnaisen argumentin, jossa voit määrittää aloitusindeksin. Oletuksena se on nolla, mutta voit muuttaa sen käyttämällä aloitusargumenttia:

numeroita= ['yksi', 'kaksi', 'kolme', 'neljä', 'viisi']

vartenindeksi,kohdesisään lueteltu(numeroita,alkaa=1):

Tulosta (indeksi,kohde)

Toisessa lausunnossa start = 1 -argumenttia käytetään aloituspisteen muuttamiseen. Kun olet suorittanut yllä määritetyn koodinäytteen, saat seuraavan tuloksen:

1 yksi

2 kaksi

3 kolme

4 neljä

5 viisi

Indeksin määrittäminen vaiheilla

Tämän artikkelin ensimmäisessä osassa esitetään C -kielen silmukan syntaksi, jossa voit määrittää vaiheet jokaisen seuraavan laskennan tai indeksin välillä. Pythonin luettelointitoiminnolla ei ole käytettävissä tällaisia ​​argumentteja, joten et voi määrittää askelta laskujen välillä. Voit todella kirjoittaa oman logiikkasi toteuttaaksesi vaiheita lueteltujen silmukkalohkon sisällä. On kuitenkin olemassa tapa toteuttaa mukautettuja vaiheita kirjoittamalla minimaalinen koodi. Seuraava esimerkki näyttää vaiheiden toteutuksen zip- ja aluefunktioilla:

numeroita= ['nolla', 'kaksi', 'neljä', 'kuusi']

vartenindeksi,kohdesisään postinumero(valikoima(0, 7, 2),numeroita):

Tulosta (indeksi,kohde)

Zip -toiminnon avulla voit luoda pareja poimimalla elementit, joilla on sama indeksi kahdesta tai useammasta iteratiivista. Joten zip -funktio poimii tässä elementin alueelta (0, 7, 2) palautetusta toistettavasta toiminnosta ja toisen elementin numeroluettelosta ja muodostaa sitten molemmat pariksi. Lopputulos on samanlainen toteutus kuin luettelointitoiminto, mutta mukautetut vaiheet on määritetty kolmanneksi argumentiksi alueen (0, 7, 2) funktiossa (2 tässä tapauksessa). Kun olet suorittanut yllä määritetyn koodinäytteen, saat seuraavan tuloksen:

0 nolla

2 kaksi

4 neljä

6 kuusi

Johtopäätös

Pythonin laskentatoiminnon avulla voit kirjoittaa ytimekkään koodin määrittämällä numerosarjan iteroitavan objektin elementeille. Tämä on todella hyödyllistä, jos haluat seurata toistettavan tyypin kohteiden indeksiä. Jos haluat luetella toistettavia tyyppejä mukautetuilla vaiheilla, käytä zip -toimintoa, joka on selitetty viimeisessä esimerkissä.