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

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 的评论,我意识到您可能想要翻转对 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

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

关于python - 这是一种使用 itertools.cycle() 了解索引的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26531116/

10-12 20:54