关于python:有没有方法循环使用索引

Is there a way to cycle through indexes

本问题已经有最佳答案,请猛点这里访问。
1
list1 = [1,2,3,4]

如果我有一个以上的list1指数显示,在最后一3有价值,但如果我说方式,它将成为list1[4]list1[0]吗?


你可以对数学进行如下模块化:

代码:

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

结果:

1
1

你可以实现你自己的类来实现这个。

1
2
3
4
5
6
7
8
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的所有其他行为,如切片。


在您描述的情况下,我自己使用了stephenrauch建议的方法。但是考虑到添加了cycle作为标记,您可能希望知道存在一个类似itertools.cycle的东西。

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

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

不过,要小心出口条件,你可能会发现自己处于一个无止境的循环中。