我正在尝试处理向量的批处理
假设,我有这个向量
v = [10, 20, 30, 40, 70, 80, 90]
我想每三个元素打印一次,如果到达末尾,则返回开头并取第一个元素,依此类推。例如,输出类似于
10、20、30
40、70、80
90, 10, 20 <== 重新开始
30、40、70
80, 90, 10 <== 重新开始
等等……
我知道我可以创建一个函数并使用模块计算开始和结束索引,但我在想是否有一种方法可以使用 sintaxis,比如
v[8:10 % 9] #would print v[8], v[0] and v[1]
我知道您可以对单个索引 v[index % len(v)] 执行此操作,但是否可以对范围 v[range % len(v)]
执行此操作?
最佳答案
虽然可以计算索引,但我会使用 itertools.cycle
使用 zip(*[] * x)
石斑鱼:
from itertools import cycle
v = [10, 20, 30, 40, 70, 80, 90]
n = 10
for index, *group in zip(range(n), *[cycle(v)] * 3):
print(group)
将 n
更改为您想要循环的次数。输出:
[10, 20, 30]
[40, 70, 80]
[90, 10, 20]
[30, 40, 70]
[80, 90, 10]
[20, 30, 40]
[70, 80, 90]
[10, 20, 30]
[40, 70, 80]
[90, 10, 20]
关于python - Python 中索引的循环范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54665231/