开始大于停止的 Python 范围

标签 python loops indexing

我想提取向量的 i 索引 t 次。例如,如果我有一个向量 x = [1,2,3,4,5,6,7]i = 3t = 5 ,我每次的索引必须是:

t = 1; [1,2,3]

t = 2; [4,5,6]

t = 3; [7,1,2]

t = 4; [3,4,5]

t = 5; [6,7,1]

是否可以在 Python 中使用 range() 来实现?

最佳答案

您可以使用 itertools.isliceitertools.cycle .从 iterable 创建一个 cycle 对象,然后使用您的窗口大小 i 对该对象进行切片:

from itertools import cycle
from itertools import islice

l = [1,2,3,4,5,6,7]
t = 5; i = 3

c =  cycle(l) 
r = [list(islice(c, i)) for _ in range(t)] # range appears here
# [[1, 2, 3], [4, 5, 6], [7, 1, 2], [3, 4, 5], [6, 7, 1]]

您可以将此应用于 i 的不同非负值,甚至当 i 大于您的列表长度时:

i = 10
r = [list(islice(c, i)) for _ in range(t)]
print(r)
# [[1, 2, 3, 4, 5, 6, 7, 1, 2, 3], [4, 5, 6, 7, 1, 2, 3, 4, 5, 6], [7, 1, 2, 3, 4, 5, 6, 7, 1, 2], [3, 4, 5, 6, 7, 1, 2, 3, 4, 5], [6, 7, 1, 2, 3, 4, 5, 6, 7, 1]]

关于开始大于停止的 Python 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075609/

相关文章:

python - 编写一个函数,将两个自然数 𝑘 和 𝑛 作为输入,并返回所有大小为 𝑘 且总和为 𝑛 的元组的集合

php - 使用 Cycle2 成对显示肖像图像

list - Haskell- 在列表中查找元素并返回其位置

python - 在 Python 3.4.3 中将两个字符串列表组合在一起一次

c++ - 我将如何创建一个可以具有非零下限的 Array 类(在 C++ 中)?

node.js - 如何在elasticsearch中进行精确匹配?

python - 如何在 python 电路中使用线程

python - Pyenv 在升级到 Big Sur 后崩溃了

python - 反转 '' *'',参数 '()' 和关键字参数 '{}' 未找到

c# - 将 VB.Net 代码转换为 C# 时出现逻辑错误