Получить индекс объекта итератора python

Как получить доступ к индексу текущего элемента в объекте iterator в Python?

Например, при использовании функции регулярного выражения finditer, как вы можете получить доступ к индексу итератора в цикле for.

re.finditer(pattern, text)

Ответ 1

Итераторы не были предназначены для индексации (помните, что они производят свои вещи лениво).

Вместо этого вы можете использовать enumerate для номера элементов по мере их создания:

for index, match in enumerate(it):

Ниже приведена демонстрация:

>>> it = (x for x in range(10, 20))
>>> for index, item in enumerate(it):
...     print(index, item)
...
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
>>>

Обратите внимание, что вы также можете указать номер для начала подсчета по адресу:

>>> it = (x for x in range(10, 20))
>>> for index, item in enumerate(it, 1):  # Start counting at 1 instead of 0
...     print(index, item)
...
1 10
2 11
3 12
4 13
5 14
6 15
7 16
8 17
9 18
10 19
>>>