Ofte, når vi har å gjøre med iteratorer, må vi også holde en telling over iterasjoner. Python letter programmerernes oppgave ved å gi en innebygd funksjon enumerate() for denne oppgaven. Enumerate ()-metoden legger til en teller til en iterabel og returnerer den i form av et enumererende objekt. Dette opplistede objektet kan deretter brukes direkte til løkker eller konverteres til en liste med tupler ved å bruke list()-funksjonen.
Syntaks: enumerate(iterable, start=0)
Parametere:
- Iterable: ethvert objekt som støtter iterasjon
- Start: indeksverdien som telleren skal startes fra, er som standard 0
Komme tilbake: Returnerer en iterator med indeks- og elementpar fra den opprinnelige iterable
Eksempel
Her bruker vi funksjonen enumerate() med både en liste og en streng. Lage opplistingsobjekter for hver og vise deres returtyper. Den viser også hvordan du endrer startindeksen for opptelling når den brukes på en streng, noe som resulterer i indeks-elementpar for listen og strengen .
Python3
l1>=> [>'eat'>,>'sleep'>,>'repeat'>]> s1>=> 'geek'> # creating enumerate objects> obj1>=> enumerate>(l1)> obj2>=> enumerate>(s1)> print> (>'Return type:'>,>type>(obj1))> print> (>list>(>enumerate>(l1)))> # changing start index to 2 from 0> print> (>list>(>enumerate>(s1,>2>)))> |
>
>
Produksjon:
Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]>
Bruke Enumerate Object i Loops
Enumerate() brukes med en liste kalt l1. Den skriver først ut tupler av indeks- og elementpar. Deretter endrer den startindeksen mens den skriver dem ut sammen. Til slutt skriver den ut indeksen og elementet separat, hver på sin egen linje.
Python3
l1>=> [>'eat'>,>'sleep'>,>'repeat'>]> # printing the tuples in object directly> for> ele>in> enumerate>(l1):> >print> (ele)> # changing index and printing separately> for> count, ele>in> enumerate>(l1,>100>):> >print> (count, ele)> # getting desired output from tuple> for> count, ele>in> enumerate>(l1):> >print>(count)> >print>(ele)> |
>
>
Produksjon:
(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat>
Få tilgang til neste element
I Python fungerer enumerate()-funksjonen som en iterator, og arver alle tilknyttede iteratorfunksjoner og -metoder. Derfor kan vi bruke next()-funksjonen og __next__()-metoden med en oppregne gjenstand.
For å få tilgang til neste element i et enumerate-objekt, kan du bruke next()-funksjonen. Den tar det enumererte objektet som input og returnerer neste verdi i iterasjonen.
Python3
ikke
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
>
>
Produksjon:
Next Element: (0, 'apple')>
Du kan ringe next() igjen for å hente påfølgende elementer:
Python3
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
>
>
Produksjon:
Next Element: (0, 'apple')>
Hver gang neste() kalles, flytter den interne pekeren til det oppregne objektet til neste element, og returnerer den tilsvarende tuppelen av indeks og verdi.