关于python:如何在循环中获取当前迭代器项的索引?

How to get the index of the the current iterator item in a loop?

本问题已经有最佳答案,请猛点这里访问。

如何获取循环中python迭代器当前项的索引?

例如,当使用返回迭代器的正则表达式finditer函数时,如何在循环中访问迭代器的索引。

1
2
for item in re.finditer(pattern, text):
    # How to obtain the index of the"item"

迭代器没有被设计成被索引的(请记住,它们是懒洋洋地生成它们的项)。

相反,您可以使用enumerate对生产的项目进行编号:

1
for index, match in enumerate(it):

下面是一个演示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> 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
>>>

请注意,您还可以指定一个开始计数的数字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> 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
>>>