这是一种使用 itertools.cycle() 了解索引的方法吗?

Del*_*gan 4 python indexing cycle python-itertools

我需要遍历一个列表并在到达最后一个项目时返回到第一个元素。

cycle从对象itertools是专为这一点。

myList = [1,2,3,4,5,6,7,8,9]

i = 0
for item in cycle(myList):
    index = i%9
    print (index)
    i += 1
Run Code Online (Sandbox Code Playgroud)

除了使用i变量还有其他方法吗?

小智 5

您可以使用enumerate

for i, item in enumerate(cycle(myList)):
Run Code Online (Sandbox Code Playgroud)

下面是一个演示:

>>> from itertools import cycle
>>> for i, item in enumerate(cycle([1, 2, 3])):
...     print i, item
...
0 1
1 2
2 3
3 1
4 2
5 3
Run Code Online (Sandbox Code Playgroud)

你甚至可以给出一个具体的数字开始:

for i, item in enumerate(cycle([1, 2, 3]), 10): # Start at 10
Run Code Online (Sandbox Code Playgroud)

阅读@DSM 的评论,我意识到您可能想要将调用翻转到cycleenumerate

>>> for i, item in cycle(enumerate([1, 2, 3])):
...     print i, item
...
0 1
1 2
2 3
0 1
1 2
2 3
Run Code Online (Sandbox Code Playgroud)

这将导致i引用item列表中的索引而不是充当计数器变量。