簡體   English   中英

如何使用切片索引變量在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM