如何使用切片索引变量在 for 循环中对数组进行切片

How to slice arrays in a for loop with the slicing indices variable

我想将一个包含 64 个项目的数组分成八个部分,为此使用了以下方法,但它显示语法错误

for i in range(8):
    s = slice(8i,(8i+7))
    inparr = cornersort[s]

for i in range(8):
    inparr = cornersort[8i,(8i+7)]

两者都显示错误消息:

 s = slice(8i,(8i+7))
            ^
SyntaxError: invalid syntax

然而,当我删除 for 循环可迭代时 'i';代码有效。请帮忙解决这个问题。

虽然 8i 是一个有效的数学表达式,但它不是一个有效的 python 语句,因为乘法运算需要明确而不是隐含:

i = 8

8i # SyntaxError

8*i
64

此外,变量名不能以数字开头:

2i = 5
# syntaxError

i2 = 5
# this is fine

所以对于你的循环:

for i in range(8):
    inparr = cornersort[8*i:(8*i+8)]

请查看以下示例,了解如何将包含 64 个项目的数组分成 8 个切片,每个切片包含 8 个项目。请注意基本语法 [start:stop] 并且切片索引为 start <= i < stop,即停止点在切片后的一项。

test = list(range(64))

# example 1
for i in range(8):
    print(test[8*i:8*i+8])

# example 2
for i in range(0,64,8):
    print(test[i:i+8])

您可以使用range

 for i in range(0, 64, 8):
      # slice arr[i: i + 8]

结果是

i, i+8
0 8
8 16
16 24
24 32
32 40
40 48
48 56
56 64