Enumerate() a Python
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
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:
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:
(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:
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.