
Enumerate to wbudowana funkcja w Python, która umożliwia nam iterację po obiektach, takich jak lista (tzw iteratorach), przy jednoczesnej informacji, którą iterację wykonujemy. Zobaczmy:
Aby docenić użyteczność tej funkcji, przyjrzyjmy się prostej iteracji, po prostej liście:
lista = ['a','b','c','d','e'] count = 0 for l in lista: print('Iteracja nr.', count,' Wartość:', l) count+=1
Z faktu, że zależy nam na informacji o tym, którą iterację wykonujemy, wprowadziliśmy dodatkową zmienną 'count’, która przechowuje tę informację.
Działa? Działa.
Jednak Python, jak to w wielu innych obszarach, na swój 'pythonowski’ sposób, aby to uprościć. I tym sposobem jest, wbudowana funkcja enumerate()
Funkcja enumerate(), zwraca nam nie tylko element ze zbioru, ale również numer iteracji. Spójrzmy:
Enumerate, z listą
lista = ['a','b','c','d','e'] for count, l in enumerate(lista): print('Iteracja nr.', count,' Wartość:', l)
A w odpowiedzi otrzymujemy:

Pierwsza wartością, która zwraca funkcja enumerate(), jest numer iteracji, zaczynając od 0, natomiast drugim, wartość z listy. Tak samo, jak miało to miejsce w przypadku poprzedniego przykładu.
Zapis jest bardziej zwięzły oraz, jak to niektórzy programiści mówią, bardziej 'pythonowski’.
Funkcja enumerate(), może przyjąć drugi parametr, którym możemy zmienić start licznika.
for count, l in enumerate(lista,3): print('Iteracja nr.', count,' Wartość:', l)

Enumerate, z tekstem
Podobnie jak w przypadku list, możemy użyć funkcji enumerate(), do otrzymania licznika, iterując po łańcuchu znaków:
tekst = 'Analityk' for count, l in enumerate(tekst): print (count,l)

Enumerate, ze słownikiem
I bardzo podobnie zadziała to w przypadku słownika:
słownik = {'Poland':'Warsaw', 'Germany':'Berlin', 'US':'New York'} for count, s in enumerate(słownik): print (count, s, słownik[s])

Podsumowując.
Jest to prosta 'sztuczka’, która sprawia, że nasze kody są odrobinę bardziej zwięzłe oraz bardziej Pythonowskie 🙂