如何使用切片索引变量在 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
我想将一个包含 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