Как нарезать массивы в цикле for с помощью переменной индексов среза - PullRequest
0 голосов
/ 25 июня 2019

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

Ответы [ 3 ]

0 голосов
/ 25 июня 2019

Ниже приведены примеры того, как разделить массив из 64 элементов на 8 частей по 8 элементов в каждом. Обратите внимание, что базовый синтаксис [start:stop] и индексы среза начинаются <= i <стоп, то есть точки останова через один элемент после среза. </p>

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])
0 голосов
/ 25 июня 2019

Вы можете использовать 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 голосов
/ 25 июня 2019

Хотя 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)]
...