Я хочу нарезать массив из 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'; код работал. Пожалуйста, помогите, как это исправить.

0
Amol Shah 25 Июн 2019 в 17:21

2 ответа

Лучший ответ

Хотя 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)]
0
C.Nivs 25 Июн 2019 в 14:34

Вы можете использовать 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
0
Chinny84 25 Июн 2019 в 14:35