Python

Brug Enumerate-funktion i Python til at oprette sløjfer med tællere

Brug Enumerate-funktion i Python til at oprette sløjfer med tællere

Denne artikel vil forklare brugen af ​​funktionen "enumerate", der er tilgængelig i Pythons standardmodulbibliotek. Enumerate-funktion giver dig mulighed for at tildele et "indeks" eller "tælle" til elementer i ethvert iterabelt objekt. Du kan derefter implementere yderligere logik på dem, da du har adgang til begge værdier og et antal tilknyttet det.

Syntaks og grundlæggende eksempel

Hvis du har brugt en "for" -sløjfe på andre programmeringssprog, især "C" -sprog og andre sprog med "C" -syntaks, har du muligvis angivet et startindeks i sløjfen. Som reference er her, hvordan en "for" -sløjfe ser ud i "C" og andre sprog, der har lignende syntaks:

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

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

Looperklæringen initialiserer en variabel med en værdi på nul, kontrollerer at den er mindre end en tærskel og forøger den med et antal efter evaluering af logik inde i loopblokken (hvis stopbetingelsen er opfyldt). På denne måde kan du bruge et indeks og tildele det til alle objekter, der henvises til i din loopblok. Til sammenligning er her, hvordan en for-loop med samme resultat ser ud i Python:

for jeg inden for rækkevidde (0, 10):
udskrive (i)

Funktionen "rækkevidde" i Python giver dig mulighed for at specificere en række rækkefølge, der har et standard trin på 1. Du kan ændre trinværdien ved at angive et tredje argument. Det andet argument i funktionen "rækkevidde" bruges til at indstille tærsklen for stoptilstand. Begge kodeeksempler producerer følgende output:

0
1
2
3
4
5
6
7
8
9

Disse sløjfer fungerer fint, hvis du bare vil generere en række nummerserier og knytte dem til noget logik inde i loop-sætningen. Du skal dog muligvis bruge en anden indlejret løkke eller bruge funktionen "udbytte" på en hvilken som helst iterabel type for at tildele dem en slags sporbar optælling. Metoden "enumerate" gør det let at tildele indekser til iterables i en sætning, hvilket eliminerer behovet for at køre flere indlejrede sløjfer. Se på denne kodeeksempel:

tal = ["nul", "en", "to", "tre", "fire", "fem"]
enumerated_numbers = enumerate (numbers)
for indeks, element i enumerated_numbers:
print (indeks, vare)

Den første sætning definerer en ny variabel kaldet "tal" og tildeler den en iterabel (listetype). Den anden sætning viser brugen af ​​"enumerate" -funktionen, hvor du angiver en iterabel til den som et obligatorisk argument. Den tredje sætning konverterer variablen "enumerated_numbers" til et objekt af listen. Som standard genererer "enumerate" -funktionen et "enumerate" -objekt og ikke en iterabel type, så du skal konvertere det. Efter at have kørt ovenstående kodeprøve, skal du få følgende output:

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

Funktionen "enumerate" tildeler et element til et element i en iterabel type og opretter tupler med parrede værdier. Som standard starter optællingen fra nul.

Nu hvor du har tildelt et nummer til hvert element i en iterabel type, kan du nemt løbe over det uden at skrive indlejrede udsagn:

tal = ["nul", "en", "to", "tre", "fire", "fem"]
enumerated_numbers = enumerate (numbers)
for indeks, element i enumerated_numbers:
print (indeks, vare)

Kodeprøven, der er angivet ovenfor, producerer følgende output:

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

Du kan gøre koden kortere ved at bruge “enumerate” -funktionen inline, som vist i eksemplet nedenfor:

tal = ["nul", "en", "to", "tre", "fire", "fem"]
for indeks, vare i enumerate (tal):
print (indeks, vare)

Brug af Tæl med et andet startindeks

Funktionen "enumerate" tager et valgfrit argument, hvor du kan angive et startindeks. Som standard er det nul, men du kan ændre det ved hjælp af "start" -argumentet:

tal = ["en", "to", "tre", "fire", "fem"]
for indeks, vareliste (tal, start = 1):
print (indeks, vare)

I den anden sætning bruges argumentet "start = 1" til at ændre startpunktet. Efter at have kørt den kodeeksempel, der er angivet ovenfor, skal du få følgende output:

1 en
2 to
3 tre
4 fire
5 fem

Tildeling af indeks med trin

I det første afsnit af denne artikel vises syntaks for "for" -sløjfe på "C" -sprog, hvor du kan definere trin mellem hvert efterfølgende antal eller indeks. Funktionen "enumerate" i Python har ikke noget sådant argument tilgængeligt, så du kan ikke angive et trin mellem tællingerne. Du kan faktisk skrive din egen logik for at implementere trin inde i den opregnede "for" loop-blok. Der er dog en måde at implementere brugerdefinerede trin ved at skrive minimal kode. Følgende eksempel viser implementering af trin ved hjælp af "zip" og "rækkevidde" funktioner:

tal = ["nul", "to", "fire", "seks"]
for indeks, vare i zip (interval (0, 7, 2), tal):
print (indeks, vare)

Funktionen "zip" giver dig mulighed for at oprette par ved at samle elementer op med det samme indeks fra to eller flere iterables. Så "zip" -funktionen her samler et element op fra det iterable, der returneres fra "range (0, 7, 2)" -funktionen og et andet element fra "numbers" -listen og parrer dem begge til en tuple. Slutresultatet er en identisk implementering af funktionen "enumerate", men med brugerdefinerede trin specificeret som et tredje argument i "interval (0, 7, 2)" -funktionen (2 i dette tilfælde). Efter at have kørt den kodeeksempel, der er angivet ovenfor, skal du få følgende output:

0 nul
2 to
4 fire
6 seks

Konklusion

Funktionen "enumerate" i Python giver dig mulighed for at skrive kortfattet kode ved at tildele en nummersekvens til elementer i et iterabelt objekt. Dette er virkelig nyttigt, hvis du vil holde styr på indekset over varer i en gentagelig type. Hvis du vil "opregne" iterable typer med brugerdefinerede trin, skal du bruge "zip" -funktionen, der blev forklaret i det sidste eksempel.

Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...
Mus AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
Tabletbrugere savner ofte musemarkøren, især når de er vante til at bruge bærbare computere. Touchscreen-smartphones og tablets har mange fordele, og ...