Python

Za ustvarjanje zank s števci uporabite funkcijo Enumerate Function v Pythonu

Za ustvarjanje zank s števci uporabite funkcijo Enumerate Function v Pythonu

Ta članek bo razložil uporabo funkcije “enumerate”, ki je na voljo v Pythonovi standardni knjižnici modulov. Funkcija štetja vam omogoča, da elementom v katerem koli iterabilnem objektu dodelite indeks ali štetje. Nato lahko na njih uveljavite nadaljnjo logiko, saj boste imeli dostop do obeh vrednosti in štetje, ki je preslikano nanje.

Sintaksa in osnovni primer

Če ste zanko »for« uporabili v drugih programskih jezikih, zlasti jeziku »C« in drugih jezikih s sintakso sloga »C«, ste v zanki morda navedli začetni indeks. Za referenco je tukaj videti, kako je zanka »for« v »C« in drugih jezikih s podobno sintakso:

za (int i = 0; i < 10; i++)

printf ("% d \ n", i);

Stavek zanke inicializira spremenljivko z vrednostjo nič, preveri, ali je manjša od praga, in jo poveča za eno štetje po oceni logike znotraj bloka zanke (če je izpolnjen pogoj zaustavitve). Na ta način lahko uporabite indeks in ga dodelite katerim koli predmetom, na katere se sklicuje vaš blok zank. Za primerjavo, tukaj je videti, kako je zanka for z enakim rezultatom v Pythonu:

za i v območju (0, 10):
natisni (i)

Funkcija »obseg« v Pythonu vam omogoča, da določite zaporedje obsega številk, ki ima privzeti korak 1. Vrednost koraka lahko spremenite tako, da navedete tretji argument. Drugi argument v funkciji “range” se uporablja za nastavitev praga stanja zaustavitve. Oba vzorca kode data naslednji izhod:

0
1
2
3
4
5
6
7
8
9

Te zanke dobro delujejo, če želite samo ustvariti neko zaporedje številk in jih povezati z neko logiko znotraj stavka zanke. Vendar pa boste morda morali uporabiti drugo ugnezdeno zanko ali uporabiti funkcijo "yield" na katerem koli iterabilnem tipu, da jim dodelite nekakšno število sledljivosti. Metoda "enumerate" olajša dodeljevanje indeksov iterablom v enem stavku, s čimer odpravlja potrebo po zagonu več ugnezdenih zank. Oglejte si ta vzorec kode:

številke = ["nič", "ena", "dve", "tri", "štiri", "pet"]
enumerated_numbers = enumerate (številke)
za indeks, postavka v številskih_številkah:
tisk (kazalo, postavka)

Prvi stavek definira novo spremenljivko, imenovano "številke", in ji dodeli iterabil (vrsto seznama). Drugi stavek prikazuje uporabo funkcije “enumerate”, kjer ji kot obvezen argument posredujete iterabil. Tretji stavek spremenljivko “enumerated_numbers” pretvori v objekt vrste seznama. Privzeto funkcija “enumerate” generira objekt “enumerate” in ne iterabilnega tipa, zato ga morate pretvoriti. Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji izhod:

[(0, "nič"), (1, "ena"), (2, "dve"), (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 iterabilnem tipu dodelili številko, jo lahko enostavno zavrtite brez pisanja ugnezdenih stavkov:

številke = ["nič", "ena", "dve", "tri", "štiri", "pet"]
enumerated_numbers = enumerate (številke)
za indeks, postavka v številu_številk:
tisk (kazalo, postavka)

Zgornji vzorec kode bo dal naslednje rezultate:

0 nič
1 ena
2 dve
3 tri
4 štiri
5 pet

Kodo lahko skrajšate z uporabo funkcije »enumerate« v vrstici, kot je prikazano v spodnjem vzorcu:

številke = ["nič", "ena", "dve", "tri", "štiri", "pet"]
za indeks, postavka v številu (številke):
tisk (kazalo, postavka)

Uporaba Enumerate z drugačnim začetnim indeksom

Funkcija “enumerate” sprejme neobvezen argument, kjer lahko določite začetni indeks. Privzeto je nič, vendar ga lahko spremenite z argumentom »start«:

številke = ["ena", "dve", "tri", "štiri", "pet"]
za indeks, postavka v naštevanju (številke, začetek = 1):
tisk (kazalo, postavka)

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

1 ena
2 dve
3 tri
4 štiri
5 pet

Dodelitev indeksa s koraki

V prvem odseku tega članka je prikazana sintaksa zanke »for« 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 določiti koraka med štetjem. Resnično lahko napišete svojo logiko za izvajanje korakov znotraj naštetega bloka zanke "for". Vendar obstaja način za izvajanje korakov po meri s pisanjem minimalne kode. Naslednji primer prikazuje izvajanje korakov z uporabo funkcij »zip« in »range«:

številke = ["nič", "dve", "štiri", "šest"]
za indeks, postavka v zip (obseg (0, 7, 2), številke):
tisk (kazalo, postavka)

Funkcija »zip« vam omogoča ustvarjanje parov z izbiro elementov z enakim indeksom iz dveh ali več ponovljivih elementov. Torej funkcija »zip« tukaj pobere element iz iterabilnosti, vrnjenega iz funkcije »range (0, 7, 2)«, in še en element s seznama »numbers«, nato pa oba združi v nabor. Končni rezultat je enaka izvedba funkcije “enumerate”, vendar s koraki po meri, določenimi kot tretji argument v funkciji “range (0, 7, 2)” (v tem primeru 2). Po zagonu zgoraj navedenega vzorca kode bi morali dobiti naslednji izhod:

0 nič
2 dve
4 štiri
6 šest

Zaključek

Funkcija »enumerate« v Pythonu vam omogoča pisanje jedrnate kode z dodelitvijo zaporedja števil elementom v iterabilnem objektu. To je zelo koristno, če želite slediti indeksu elementov znotraj iterabilne vrste. Če želite s številom korakov po meri "našteti" ponovljive vrste, uporabite funkcijo "zip", razloženo v zadnjem primeru.

Najboljše igre ukazne vrstice za Linux
Ukazna vrstica ni le vaš največji zaveznik pri uporabi Linuxa - lahko je tudi vir zabave, saj jo lahko uporabljate za igranje številnih zabavnih iger,...
Najboljše aplikacije za preslikavo gamepadov za Linux
Če želite igre na Linuxu igrati z igralno ploščico namesto s tipičnim sistemom za vnos tipkovnice in miške, je za vas na voljo nekaj uporabnih aplikac...
Uporabna orodja za igralce Linux
Če radi igrate igre na Linuxu, obstaja verjetnost, da ste za izboljšanje igralne izkušnje uporabljali aplikacije in pripomočke, kot so Wine, Lutris in...