Sovint, quan tractem amb iteradors, també hem de fer un recompte d'iteracions. Python facilita la tasca dels programadors proporcionant una funció integrada enumerate() per a aquesta tasca. El mètode enumerate () afegeix un comptador a un iterable i el retorna en forma d'objecte enumerador. Aquest objecte enumerat es pot utilitzar directament per a bucles o es pot convertir en una llista de tuples mitjançant la funció list().
Sintaxi: enumerar (iterable, començar=0)
Paràmetres:
- Iterable: qualsevol objecte que admeti la iteració
- Començar: el valor d'índex des del qual s'ha d'iniciar el comptador, per defecte és 0
Tornada: Retorna un iterador amb parells d'índex i d'elements de l'iterable original
Exemple
Aquí, estem utilitzant la funció enumerate() amb una llista i una cadena. Creació d'objectes enumerats per a cadascun i mostrant els seus tipus de retorn. També mostra com canviar l'índex inicial de l'enumeració quan s'aplica a una cadena, donant lloc a parells d'elements d'índex per a la llista i la cadena. .
Python 3
impressió de declaracions en java
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>)))> |
>
>
Sortida:
si més si java
Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]>
Ús d'enumerar objecte en bucles
Enumerate() s'utilitza amb una llista anomenada l1. Primer imprimeix tuples d'índex i parells d'elements. A continuació, canvia l'índex inicial mentre els imprimeix junts. Finalment, imprimeix l'índex i l'element per separat, cadascun en la seva pròpia línia.
Python 3
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)> |
>
>
Sortida:
és igual a una cadena en java
(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat>
Accés a l'element següent
A Python, la funció enumerate() serveix com a iterador, heretant totes les funcions i mètodes associats de l'iterador. Per tant, podem utilitzar la funció next() i el mètode __next__() amb un enumerar objecte.
Per accedir al següent element d'un objecte enumerat, podeu utilitzar la funció next(). Pren l'objecte enumerat com a entrada i retorna el següent valor de la iteració.
Python 3
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
>
>
Sortida:
configuració del navegador d'Internet
Next Element: (0, 'apple')>
Podeu tornar a cridar next() per recuperar els elements següents:
Python 3
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
>
>
Sortida:
Next Element: (0, 'apple')>
Cada vegada que es crida a next(), el punter intern de l'objecte enumerate es mou al següent element, retornant la tupla corresponent d'índex i valor.