Za ustvarjanje zank s števci uporabite funkcijo naštevanja v Pythonu

Use Enumerate Function Python Create Loops With Counters



Ta članek bo razložil uporabo funkcije naštevanja, ki je na voljo v standardni knjižnici modulov Python. Funkcija Enumerate vam omogoča, da elementom v katerem koli iterabilnem predmetu dodelite indeks ali štetje. Nato lahko nanje implementirate nadaljnjo logiko, saj boste imeli dostop do obeh vrednosti in števila, preslikanih vanj.

Sintaksa in osnovni primer

Če ste zanko for uporabljali v drugih programskih jezikih, zlasti v jeziku C in drugih jezikih s sintakso sloga C, ste morda v zanki podali začetni indeks. Za referenco je videti, kako zanka for izgleda v C in drugih jezikih s podobno skladnjo:







za (intjaz= 0;jaz< 10;jaz++)

{

printf ('%d n',jaz);

}

Stavek zanke inicializira spremenljivko z vrednostjo nič, preveri, ali je manjša od praga, in jo po ovrednotenju logike znotraj bloka zanke poveča za eno število (če je izpolnjen pogoj zaustavitve). Na ta način lahko uporabite indeks in ga dodelite katerim koli objektom, navedenim v bloku zanke. Za primerjavo, tako izgleda zanka for z enakim rezultatom v Pythonu:



zajazv obseg(0, 10):

tiskanje (jaz)

Funkcija obsega v Pythonu vam omogoča, da določite zaporedje obsegov številk, ki ima privzeti korak 1. Vrednost koraka lahko spremenite tako, da vnesete tretji argument. Drugi argument v funkciji obsega se uporablja za nastavitev praga za stanje zaustavitve. Oba vzorca kod ustvarita naslednji izhod:



0

1

2

3

4

5

6

7

8

9

Te zanke delujejo dobro, če želite samo ustvariti neko zaporedje števil in jih povezati z neko logiko v stavku zanke. Vendar pa boste morda morali uporabiti drugo ugnezdeno zanko ali uporabiti funkcijo donosa pri kateri koli vrsti, ki jo je mogoče ponoviti, da jim dodelite nekakšno število sledljivih. Metoda enumerate olajša dodeljevanje indeksov ponovljivim zapisom v enem stavku, s čimer odpravlja potrebo po izvajanju več ugnezdenih zank. Oglejte si ta vzorec kode:





številke= ['nič', 'ena', 'dva', 'tri', 'štiri', 'pet']

enumerated_numbers= na seznamu(številke)

zakazalo,elementvenumerated_numbers:

tiskanje (kazalo,element)

Prvi stavek definira novo spremenljivko, imenovano številke, in ji dodeli ponovljivo (vrsto seznama). Drugi stavek prikazuje uporabo funkcije enumerate, kjer ji podate iterable kot obvezen argument. Tretji stavek pretvori spremenljivko enumerated_numbers v objekt vrste seznama. Funkcija enumerate privzeto ustvari objekt tipa enumerate in ne iterable type, zato ga morate pretvoriti. Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji izhod:

[(0, 'nič'), (1, 'ena'), (2, 'dva'), (3, 'tri'), (4, 'štiri'), (5, 'pet')]

Funkcija enumerate dodeli štetje vsakemu elementu v iterabilnem tipu in ustvari nabore s seznanjenimi vrednostmi. Privzeto se štetje začne od nič.



Zdaj, ko ste vsakemu elementu v iterabilni vrsti dodelili številko, jo lahko preprosto preklopite brez pisanja ugnezdenih stavkov:

številke= ['nič', 'ena', 'dva', 'tri', 'štiri', 'pet']

enumerated_numbers= na seznamu(številke)

zakazalo,elementvenumerated_numbers:

tiskanje (kazalo,element)

Zgoraj naveden vzorec kode bo ustvaril naslednje rezultate:

0 nič

1 ena

2 dva

3 tri

4 štiri

5 pet

Kodo lahko skrajšate z uporabo funkcije naštevanja v vrstici, kot je prikazano v spodnjem vzorcu:

številke= ['nič', 'ena', 'dva', 'tri', 'štiri', 'pet']

zakazalo,elementv na seznamu(številke):

tiskanje (kazalo,element)

Uporaba naštevanja z drugačnim začetnim indeksom

Funkcija enumerate sprejme izbirni argument, kjer lahko podate začetni indeks. Privzeto je nič, vendar ga lahko spremenite z uporabo argumenta start:

številke= ['ena', 'dva', 'tri', 'štiri', 'pet']

zakazalo,elementv na seznamu(številke,začetek=1):

tiskanje (kazalo,element)

V drugem stavku se argument start = 1 uporablja za spremembo izhodišča. Po zagonu zgoraj navedenega vzorca kode bi morali dobiti naslednji izhod:

1 ena

2 dva

3 tri

4 štiri

5 pet

Dodeljevanje indeksa s koraki

V prvem razdelku tega članka je prikazana sintaksa for zanke v jeziku C, kjer lahko določite korake med vsakim naslednjim štetjem ali indeksom. Funkcija enumerate v Pythonu nima na voljo nobenega takega argumenta, zato ne morete podati koraka med štetji. Pravzaprav lahko napišete svojo lastno logiko za izvajanje korakov v bloku naštetega for zanke. Vendar pa obstaja način za izvajanje korakov po meri z zapisovanjem minimalne kode. Naslednji primer prikazuje izvajanje korakov z uporabo funkcij zip in range:

številke= ['nič', 'dva', 'štiri', 'šest']

zakazalo,elementv zadrgo(obseg(0, 7, 2),številke):

tiskanje (kazalo,element)

Zip funkcija vam omogoča ustvarjanje parov tako, da iz dveh ali več ponovljivih elementov poberete elemente z istim indeksom. Tako funkcija zip tukaj pobere element iz ponovljive funkcije, vrnjene iz obsega (0, 7, 2), in drugega elementa s seznama številk, nato pa oba seznani v nabor. Končni rezultat je enaka izvedba funkcije naštevanja, vendar s koraki po meri, ki so podani kot tretji argument v funkciji obseg (0, 7, 2) (v tem primeru 2). Po zagonu zgoraj navedenega vzorca kode bi morali dobiti naslednji izhod:

0 nič

2 dva

4 štiri

6 šest

Zaključek

Funkcija enumerate v Pythonu vam omogoča, da napišete jedrnato kodo tako, da elementom v predmetu, ki ga je mogoče ponoviti, dodelite številsko zaporedje. To je zelo koristno, če želite slediti indeksu elementov znotraj vrste, ki jo je mogoče ponoviti. Če želite s koraki po meri naštevati ponovljive vrste, uporabite funkcijo zip, razloženo v zadnjem primeru.