Python

Bruk Enumerate-funksjon i Python for å lage løkker med tellere

Bruk Enumerate-funksjon i Python for å lage løkker med tellere

Denne artikkelen vil forklare bruken av "enumerate" -funksjonen som er tilgjengelig i Pythons standard modulbibliotek. Enumerate-funksjonen lar deg tilordne en "indeks" eller "count" til elementer i ethvert iterabelt objekt. Du kan deretter implementere ytterligere logikk på dem, ettersom du vil ha tilgang til begge verdiene og et antall kartlagt til det.

Syntaks og grunnleggende eksempel

Hvis du har brukt en "for" -sløyfe i andre programmeringsspråk, spesielt "C" -språk og andre språk som har "C" -syntaks, kan du ha spesifisert en startindeks i sløyfen. For referanse, her er hvordan en "for" -sløyfe ser ut i "C" og andre språk som har lignende syntaks:

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

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

Sløyfesetningen initialiserer en variabel med verdien null, sjekker at den er mindre enn en terskel og øker den med ett antall etter å ha evaluert logikken inne i sløyfeblokken (hvis stopptilstanden er oppfylt). På denne måten kan du bruke en indeks og tilordne den til alle objekter det er referert til i sløyfeblokken. Til sammenligning er her hvordan en for loop med samme resultat ser ut i Python:

for jeg innen rekkevidde (0, 10):
skrive ut (i)

“Range” -funksjonen i Python lar deg spesifisere en rekkeviddeserie som har standard trinn 1. Du kan endre trinnverdien ved å oppgi et tredje argument. Det andre argumentet i "rekkevidde" -funksjonen brukes til å sette terskelen for stopptilstand. Begge kodeeksemplene gir følgende utdata:

0
1
2
3
4
5
6
7
8
9

Disse sløyfene fungerer bra hvis du bare vil generere en tallsekvens og knytte dem til litt logikk inne i sløyfesetningen. Imidlertid kan det hende du må bruke en annen nestet løkke eller bruke funksjonen "avkastning" på en hvilken som helst iterabel type for å tildele dem en slags sporbar telling. “Enumerate” -metoden gjør det enkelt å tilordne indekser til iterables i en uttalelse, og eliminerer dermed behovet for å kjøre flere nestede sløyfer. Ta en titt på dette kodeeksemplet:

tall = ["null", "en", "to", "tre", "fire", "fem"]
enumerated_numbers = enumerate (numbers)
for indeks, element i enumerated_numbers:
skriv ut (indeks, vare)

Den første setningen definerer en ny variabel kalt “tall” og tildeler den en iterabel (listetype). Den andre setningen viser bruk av "enumerate" -funksjonen der du gir en iterabel til den som et obligatorisk argument. Den tredje setningen konverterer variabelen “enumerated_numbers” til et objekt av listetypen. Som standard genererer "enumerate" -funksjonen et "enumerate" -objekt og ikke en iterabel 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')]

"Enumerate" -funksjonen tildeler en telling til hvert element i en iterabel type og skaper tupler som har sammenkoblede verdier. Som standard starter tellingen fra null.

Nå som du har tildelt et nummer til hvert element i en iterabel type, kan du enkelt gå over det uten å skrive nestede uttalelser:

tall = ["null", "en", "to", "tre", "fire", "fem"]
enumerated_numbers = enumerate (numbers)
for indeks, vare i enumerated_numbers:
skriv ut (indeks, vare)

Kodeprøven spesifisert ovenfor vil gi følgende utdata:

0 null
1 en
2 to
3 tre
4 fire
5 fem

Du kan gjøre koden kortere ved å bruke “enumerate” -funksjonen, som vist i eksemplet nedenfor:

tall = ["null", "en", "to", "tre", "fire", "fem"]
for indeks, vare i enumerate (tall):
skriv ut (indeks, vare)

Bruke Enumerate med en annen startindeks

"Enumerate" -funksjonen tar et valgfritt argument der du kan spesifisere en startindeks. Som standard er det null, men du kan endre det ved å bruke "start" -argumentet:

tall = ["en", "to", "tre", "fire", "fem"]
for indeks, vareliste (tall, start = 1):
skriv ut (indeks, vare)

I den andre setningen brukes argumentet "start = 1" for å endre startpunktet. Etter å ha kjørt kodeprøven spesifisert 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 syntaksen for "for" -sløyfen i "C" -språket der du kan definere trinn mellom hvert påfølgende antall eller indeks. “Enumerate” -funksjonen i Python har ikke noe slikt argument tilgjengelig, så du kan ikke spesifisere et trinn mellom tellinger. Du kan faktisk skrive din egen logikk for å implementere trinn i den oppregnede "for" loop-blokken. Imidlertid er det en måte å implementere egendefinerte trinn på ved å skrive minimal kode. Følgende eksempel viser implementering av trinn ved bruk av "zip" og "range" -funksjoner:

tall = ["null", "to", "fire", "seks"]
for indeks, vare i glidelås (rekkevidde (0, 7, 2), tall):
skriv ut (indeks, vare)

Med "zip" -funksjonen kan du lage par ved å plukke opp elementer som har samme indeks fra to eller flere iterables. Så "zip" -funksjonen her plukker opp et element fra iterabelen som returneres fra "range (0, 7, 2)" -funksjonen og et annet element fra "numbers" -listen, og parer dem begge til en tuple. Sluttresultatet er en identisk implementering av "enumerate" -funksjonen, men med egendefinerte trinn spesifisert som et tredje argument i "range (0, 7, 2)" -funksjonen (2 i dette tilfellet). Etter å ha kjørt kodeprøven spesifisert ovenfor, bør du få følgende utdata:

0 null
2 to
4 fire
6 seks

Konklusjon

"Enumerate" -funksjonen i Python lar deg skrive kortfattet kode ved å tilordne en tallsekvens til elementer i et iterabelt objekt. Dette er veldig nyttig hvis du vil holde oversikt over indeksen over varer i en iterabel type. Hvis du vil "oppregne" iterable typer med egendefinerte trinn, bruk "zip" -funksjonen som er forklart i det siste eksemplet.

Hvordan øke FPS i Linux?
FPS står for Bilder per sekund. FPSs oppgave er å måle bildefrekvensen i videoavspilling eller spillprestasjoner. Med enkle ord betegnes antall uavbru...
Topp Oculus App Lab-spill
Hvis du er Oculus-hodesettinnehaver, må du være klar over sideloading. Sidelading er prosessen med å installere ikke-butikkinnhold på hodesettet. Side...
Topp 10 spill å spille på Ubuntu
Windows-plattformen har vært en av de dominerende plattformene for spill på grunn av den enorme andelen spill som utvikles i dag for å støtte Windows ...