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 🙂