python - Python 中索引的循环范围

标签 python arrays list

我正在尝试处理向量的批处理

假设,我有这个向量

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/

相关文章:

python - 最小化 QTreeWidgetItem 中 QTextEdit 的大小

python - Numpy:如何确定 numpy 数组的所有元素是否都等于一个数字

python - 地球卫星下方的天空可见区域

python - 查找所有圆形对象

arrays - Swift 数组类型现在使用多维数组的元素类型用括号括起来

javascript - 如何使用 jQuery 根据数组中的单词检查文本字段值?

ruby-on-rails - Ruby 数组插入神秘字符

python - 如何从列表中获取单个唯一排列条目

Python/ Pandas /日期时间 : transform entire lists in a column to datetime

c# - 将列表中的项目分配给列表中的另一个项目的最快方法