我需要遍历一个列表并在到达最后一个项目时返回到第一个元素。
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
除了使用
i
变量还有其他方法吗? 最佳答案
您可以使用 enumerate
:
for i, item in enumerate(cycle(myList)):
下面是一个演示:
>>> 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
你甚至可以给出一个具体的数字开始:
for i, item in enumerate(cycle([1, 2, 3]), 10): # Start at 10
阅读@DSM 的评论,我意识到您可能想要翻转对
cycle
和 enumerate
的调用:>>> for i, item in cycle(enumerate([1, 2, 3])):
... print i, item
...
0 1
1 2
2 3
0 1
1 2
2 3
这将导致
i
引用列表中 item
的索引而不是充当计数器变量。关于python - 这是一种使用 itertools.cycle() 了解索引的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26531116/