Python understøtter mange iterable objekter: lister, tupler og strenge er blot nogle få. Pythons for loop er fleksibel nok til at håndtere disse objekter med lethed. Det sparer dig især for selv at håndtere det numeriske indeks for hver post.
Men nogle gange vil du gerne arbejde med et indeks, for at tælle eller filtrere elementer i en samling for eksempel. Lær, hvordan du kan bruge Python enumerate-funktionen til at iterere over en sekvens, mens du holder styr på både indekset og elementet.
Iterering uden enumerate()
Overvej følgende Python-liste.
my_fruits = ["æbler", "pærer", "bananer"]
Antag, at du vil holde styr på antallet af hvert element på listen. Du kunne brug en for loop med en rækkevidde() fungere sådan her.
tælle = 0
til frugt i række (len (mine_frugter)):
print (tæl, mine_frugter[tæller])
tælle += 1
Selvom dette virker, har det et par mangler:
- Du skal holde styr på optællingen uden for løkken.
- Du skal øge antallet i hver iteration.
- Du skal beregne længden af løkken.
- interval (len()) fungerer kun med tællelige, indekserbare objekter.
Der findes en bedre løsning: enumerate()-funktionen.
Sådan fungerer enumerate() i Python
Python opregne() funktion tager en dataindsamling og returnerer et opregnende objekt. Enumerate-objektet indeholder en tæller som en nøgle for hvert element, objektet indeholder. Det opregne() funktion gør det ved at tildele hvert element et antal. Denne optælling svarer til antallet af iterationer, funktionen har gennemført for at nå denne værdi.
Denne tæller gør det nemmere at få adgang til genstandene i samlingen eller endda mutere samlingen, hvor det er muligt.
Med opregne(), behøver du ikke holde styr på længden af løkken eller gentagelsesantallet. Du kan også undgå eksplicit at få adgang til værdien ved at bruge indeksoperatoren, f.eks frugter[tæller]. Enumerate-funktionen håndterer automatisk alle disse funktioner.
Syntaksen for Python enumerate()
Nedenfor er den generelle syntaks for enumerate()-funktionen.
enumerate (iterbar, start=0)
enumerate() tager to argumenter:
- iterable: en dataindsamling eller sekvens, som Python kan iterere over. For eksempel. en liste eller tupel.
- start: det indeks, som enumerate-funktionen skal begynde at tælle fra.
Hvordan enumerate() er implementeret
For at forstå hvordan opregne() virker, lad os se, hvordan det rent faktisk implementeres.
defopregne(sekvens, start=0):
n = start
til elem i rækkefølge:
udbytte n, elem
n += 1
Denne funktion, som du kan finde i Python opregn dokumentation, tager en sekvens og et startargument, som som standard er 0.
Funktionen initialiserer derefter variablen n til startvariablen. Dette holder styr på antallet af iterationer.
I for-løkken, der følger for hvert element i sekvensen,
- udbytte pauser loop-udførelsen.
- Det returnerer også det aktuelle antal (n) og værdi (elem).
- Når sløjfen genoptages, øges den n.
Returværdien er et objekt af nøgleværdi-par.
Hvis du skulle ringe til opregne() funktion og sende den listen over frugter, ville dette være outputværdien.
my_fruits = ["æbler", "pærer", "bananer"]
enumerate_object = enumerate (mine_frugter)
print (liste (enumerate_object))
# output - [(0, 'æbler'), (1, 'pærer'), (2, 'bananer')]
Opregn med et andet startindeks
I ovenstående eksempel specificerede vi ikke startindekset. Eksemplet nedenfor viser dig, hvordan du kan indstille startindekset til et antal efter eget valg.
For at starte klokken 10 skal du gøre følgende.
enumerate_object = enumerate (mine_frugter, 10)
print (liste (enumerate_object))
# output - [(10, 'æbler'), (11, 'pærer'), (12, 'bananer')]
Python enumerate() Eksempler
Her er nogle eksempler, der viser, hvordan du kan bruge opregne() i Python.
Opregn en Python-streng
I dette eksempel vil du bruge enumerate til at hente bogstavet ved indeks 5:
min_streng = "makeuseof"
til tælle, værdi i enumerate (min_streng):
hvis tælle == 5:
Print (værdi)
# output - s
Opregn en Python Tuple
Du kan også bruge opregne() at gentage over en Python tuple. I dette eksempel udskriver programmet en overskrift i den første iteration, før emnerne vises.
my_fruits_tuple = ("æbler", "pærer", "bananer")
til indeks, værdi i opregn (min_frugt_tupel):
hvis (indeks == 0):
print("Frugter:")print (værdi)
/*
Frugter:
æbler
pærer
bananer
*/
Opregn en Python-liste
I eksemplet nedenfor bruger du enumerate til at formindske alle tallene på listen over 10 med 2.
mit_nummerliste = [10, 17, 15, 6]
til indeks, værdi i opregn (min_nummerliste):
hvis (værdi > 10):
mit_nummerliste[indeks] -= 2print (min_nummerliste)
# output - [10, 15, 13, 6]
Brug enumerate til at tælle dine iterables
Python inkluderer opregne() som en indbygget funktion. Du kan bruge den til at iterere og tælle elementer i en gentagbar samling såsom liste, tuple eller streng. Det kan hjælpe dig med at holde styr på det sande indeks for hvert element, men du kan også angive dit eget startindeks. Brug det som et alternativ til rækkevidde() funktion, hvis du arbejder med objekter, der ikke er tælle og indekserbare objekter.