有没有办法循环索引

时间:2018-03-02 02:10:04

标签: python python-3.x list indexing cycle

list1 = [1,2,3,4]

如果我有如上所示的list1,则最后一个值的索引为3,但如果我说list1[4],它会变成list1[0] }?

3 个答案:

答案 0 :(得分:7)

你可以模拟数学模拟:

代码:

list1 = [1, 2, 3, 4]
print(list1[4 % len(list1)])

结果:

1

答案 1 :(得分:3)

在你描述的情况下,我自己使用@StephenRauch建议的方法。但是,鉴于您添加了cycle作为标记,您可能希望知道存在itertools.cycle这样的内容。

它返回一个迭代器,让您以循环方式永久循环遍历迭代。我不知道你原来的问题,但你可能会发现它很有用。

import itertools
for i in itertools.cycle([1, 2, 3]):
   # Do something
   # 1, 2, 3, 1, 2, 3, 1, 2, 3, ...

但要注意退出条件,你可能会发现自己处于无休止的循环中。

答案 2 :(得分:3)

您可以实现自己的类来执行此操作。

class CyclicList(list):
    def __getitem__(self, index):
        index = index % len(self) if isinstance(index, int) else index
        return super().__getitem__(index)

cyclic_list = CyclicList([1, 2, 3, 4])

cyclic_list[4] # 1

特别是这将保留list的所有其他行为,例如切片。