Функция enumerate

Встроенная в Python функция enumerate() применяется для итерируемых коллекций (строки, списки, словари и др.) и создает объект, который генерирует кортежи, состоящие из двух элементов - индекса элемента и самого элемента.

>>> a = [10, 20, 30, 40]
>>> for i in enumerate(a):
...     print(i)
... 
(0, 10)
(1, 20)
(2, 30)
(3, 40)
>>> b = "hello"
>>> for i in enumerate(b):
...     print(i)
... 
(0, 'h')
(1, 'e')
(2, 'l')
(3, 'l')
(4, 'o')

В случае словарей нумеруются ключи:

>>> c = {1: 'a', 2: 'b', 3: 'c'}
>>> for i in enumerate(c):
...     print(i)
... 
(0, 1)
(1, 2)
(2, 3)

Функция enumerate() используется для упрощения прохода по коллекциям в цикле, когда кроме самих элементов требуется их индекс:

>>> a = [10, 20, 30, 40]
>>> for id, item in enumerate(a):
...     a[id] = item + 5
... 
>>> a
[15, 25, 35, 45]

В данном случае на каждой итерации цикла из объекта enumerate извлекается очередной кортеж, состоящий из индекса очередного элемента списка и значения этого элемента. Элементы кортежа связываются с идентификаторами id и item.

Без использования enumerate в цикл пришлось бы вводить переменную-счетчик или извлекать элементы по индексу. Например:

>>> a = [10, 20, 30, 40]
>>> id = 0 # используется счетчик
>>> for num in a:
...     a[id] = num + 5 
...     id += 1
... 
>>> a
[15, 25, 35, 45]
>>> a = [10, 20, 30, 40]
>>> for i in range(len(a)): # перебор по индексам
...     a[i] += 5
... 
>>> a
[15, 25, 35, 45]

Другими словами, без функции enumerate можно обойтись. Однако она предоставляет некое удобство.

Создано