Bruk Enumerate Function i Python for å lage looper med tellere

Use Enumerate Function Python Create Loops With Counters



Denne artikkelen vil forklare bruken av enumerate -funksjonen som er tilgjengelig i Pythons standardmodulbibliotek. Enumerate -funksjonen lar deg tilordne en indeks eller telle til elementer i et gjentakende objekt. Du kan deretter implementere ytterligere logikk på dem, da du vil ha tilgang til både verdier og en telling som er kartlagt til den.

Syntaks og grunneksempel

Hvis du har brukt a for loop i andre programmeringsspråk, spesielt C -språk og andre språk som har syntaks i C -stil, kan det hende du har angitt en startindeks i loop. For referanse, her er hvordan en for loop ser ut på C og andre språk som har lignende syntaks:







til (intJeg= 0;Jeg< 10;Jeg++)

{

printf ('%d n',Jeg);

}

Sløyfeerklæringen initialiserer en variabel med en verdi på null, kontrollerer at den er mindre enn en terskel og øker den med en telling etter å ha evaluert logikken inne i sløyfeblokken (hvis stoppbetingelsen er oppfylt). På denne måten kan du bruke en indeks og tilordne den til alle objektene det refereres til i loopblokken. Til sammenligning, her er hvordan en for loop med samme resultat ser ut i Python:



tilJegi område(0, 10):

skrive ut (Jeg)

Områdefunksjonen i Python lar deg angi en rekkefølge som har et standardtrinn på 1. Du kan endre trinnverdien ved å angi et tredje argument. Det andre argumentet i områdefunksjonen brukes til å angi terskelen for stopptilstand. Begge kodeprøver gir følgende utgang:



0

1

2

3

4

5

6

7

8

9

Disse løkkene fungerer fint hvis du bare vil generere en tallsekvens og knytte dem til en logikk inne i sløyfe -setningen. Imidlertid må du kanskje bruke en annen nestet sløyfe eller bruke avkastningsfunksjonen på en gjentakende type for å tildele dem en slags sporbar telling. Oppregningsmetoden gjør det enkelt å tilordne indekser til iterables i en setning, og eliminerer dermed behovet for å kjøre flere nestede løkker. Ta en titt på dette kodeeksemplet:





tall= ['null', 'en', 'to', 'tre', 'fire', 'fem']

enumerated_numbers= oppført(tall)

tilindeks,punktienumerated_numbers:

skrive ut (indeks,punkt)

Den første setningen definerer en ny variabel som kalles tall og tildeler den en iterabel (listetype). Den andre setningen viser bruk av oppsummeringsfunksjonen der du leverer en iterable til den som et obligatorisk argument. Den tredje setningen konverterer variabelen enumerated_numbers til et listetypeobjekt. Som standard genererer enumerate -funksjonen et oppføringsobjekt og ikke en gjentakende type, så du må konvertere det. Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata:

[(0, 'null'), (1, 'en'), (2, 'to'), (3, 'tre'), (4, 'fire'), (5, 'fem')]

Oppsummeringsfunksjonen tildeler et element til hvert element i en gjentakelig type og oppretter tupler som har sammenkoblede verdier. Som standard starter antallet fra null.



Nå som du har tilordnet et nummer til hvert element i en gjentakelig type, kan du enkelt gå over det uten å skrive nestede utsagn:

tall= ['null', 'en', 'to', 'tre', 'fire', 'fem']

enumerated_numbers= oppført(tall)

tilindeks,punktienumerated_numbers:

skrive ut (indeks,punkt)

Kodeksemplet som er angitt ovenfor, gir følgende utgang:

0 null

1 en

2 to

3 tre

4 fire

5 fem

Du kan gjøre koden kortere ved å bruke enumerate function inline, som vist i eksemplet nedenfor:

tall= ['null', 'en', 'to', 'tre', 'fire', 'fem']

tilindeks,punkti oppført(tall):

skrive ut (indeks,punkt)

Bruke Enumerate med en annen startindeks

Enumerate -funksjonen tar et valgfritt argument hvor du kan angi en startindeks. Som standard er det null, men du kan endre det ved å bruke startargument:

tall= ['en', 'to', 'tre', 'fire', 'fem']

tilindeks,punkti oppført(tall,start=1):

skrive ut (indeks,punkt)

I den andre setningen brukes start = 1 argument for å endre utgangspunktet. Etter å ha kjørt kodeeksemplet som er angitt ovenfor, bør du få følgende utdata:

1 en

2 to

3 tre

4 fire

5 fem

Tilordne indeks med trinn

I den første delen av denne artikkelen vises syntaks for for loop på C -språk der du kan definere trinn mellom hver påfølgende telling eller indeks. Oppsummeringsfunksjonen i Python har ikke noe slikt argument tilgjengelig, så du kan ikke angi et trinn mellom tellinger. Du kan faktisk skrive din egen logikk for å implementere trinn inne i den opplistede sløyfeblokken. Imidlertid er det en måte å implementere tilpassede trinn ved å skrive minimal kode. Følgende eksempel viser implementering av trinn ved bruk av zip- og range -funksjoner:

tall= ['null', 'to', 'fire', 'seks']

tilindeks,punkti glidelås(område(0, 7, 2),tall):

skrive ut (indeks,punkt)

Med zip -funksjonen kan du opprette par ved å plukke opp elementer som har samme indeks fra to eller flere iterabler. Så zip -funksjonen her plukker opp et element fra den iterable returnerte fra området (0, 7, 2) -funksjonen og et annet element fra tallelisten og kobler dem deretter til en tupel. Sluttresultatet er en identisk implementering som oppsummeringsfunksjonen, men med egendefinerte trinn spesifisert som et tredje argument i området (0, 7, 2) funksjon (2 i dette tilfellet). Etter å ha kjørt kodeeksemplet som er angitt ovenfor, bør du få følgende utdata:

0 null

2 to

4 fire

6 seks

Konklusjon

Oppsummeringsfunksjonen i Python lar deg skrive kortfattet kode ved å tilordne en nummersekvens til elementer i et gjentakelig objekt. Dette er veldig nyttig hvis du vil holde oversikt over indeksen for varer inne i en gjentagelig type. Hvis du vil oppgi gjentakende typer med egendefinerte trinn, kan du bruke zip -funksjonen forklart i det siste eksemplet.