假设有list = ['A', 'B', 'C']
并且假设您需要返回list[1]
项,但您获得的索引是7
。即如果您从左到右连续计算列表中的项目,则最终会使用'B'
7
。有什么方法可以循环遍历列表,循环从结束时开始计数?
我已经实现了模数逻辑以暂时返回所需的项目(7 % 3
),但是有兴趣了解如何实际循环遍历列表,如上所述。
答案 0 :(得分:2)
好吧,你可以在循环中进行模运算:
lst = ['A', 'B', 'C']
index = 7
for i in range(index + 1):
print i, lst[i % len(lst)]
或者使用itertools.cycle
循环浏览列表,直至到达索引:
cycled = itertools.cycle(lst)
for i in range(index + 1):
print i, next(cycled)
您还可以zip
列出range
以及包含索引的内容:
for i, x in zip(range(index + 1), itertools.cycle(lst)):
print i, x
另一种可能性是将cycle
与islice
结合起来;这样,您还可以确定起始位置:
>>> list(itertools.islice(itertools.cycle(["A","B","C"]), 2, 7))
['C', 'A', 'B', 'C', 'A']