Ofte, når vi beskæftiger os med iteratorer, er vi også nødt til at holde en optælling af iterationer. Python letter programmørernes opgave ved at levere en indbygget funktion enumerate() til denne opgave. Enumerate ()-metoden tilføjer en tæller til en iterabel og returnerer den i form af et optællingsobjekt. Dette opregnede objekt kan derefter bruges direkte til sløjfer eller konverteres til en liste af tupler ved hjælp af list()-funktionen.
Syntaks: enumerate(iterbar, start=0)
Parametre:
- Iterable: ethvert objekt, der understøtter iteration
- Start: den indeksværdi, som tælleren skal startes fra, er som standard 0
Vend tilbage: Returnerer en iterator med indeks- og elementpar fra den originale iterable
Eksempel
Her bruger vi funktionen enumerate() med både en liste og en streng. Oprettelse af opregningsobjekter for hver og visning af deres returtyper. Det viser også, hvordan man ændrer startindekset for opregning, når det anvendes på en streng, hvilket 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>)))> |
>
>
Produktion:
Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]>
Brug af Enumerate Object i Loops
Enumerate() bruges med en liste kaldet l1. Det udskriver først tupler af indeks- og elementpar. Så ændrer det startindekset, mens det udskriver dem sammen. Til sidst udskriver den indekset 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)> |
>
>
Produktion:
(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat>
Adgang til næste element
I Python fungerer enumerate()-funktionen som en iterator, der arver alle tilknyttede iteratorfunktioner og -metoder. Derfor kan vi bruge funktionen next() og __next__() metoden med en opregne objekt.
For at få adgang til det næste element i et enumerate-objekt kan du bruge funktionen next(). Det tager det opregne objekt som input og returnerer den næste værdi i iterationen.
Python3
binær søgning
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
>
>
Produktion:
Next Element: (0, 'apple')>
Du kan kalde next() igen for at hente efterfølgende elementer:
Python3
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
>
>
Produktion:
Next Element: (0, 'apple')>
Hver gang next() kaldes, flytter den interne markør for det opregnede objekt til det næste element og returnerer den tilsvarende tuple af indeks og værdi.