непрерывно принимать фиксированную длину массива из произвольной длины массива - PullRequest
0 голосов
/ 07 июля 2019

Доброе утро, ребята, я пытаюсь вычислить хэширование кварков, и я запутался в конструкции губки, особенно в фазе поглощения, у меня есть массив, длина которого кратна 8, и я хочу взять первые 8 значений из массива и вычислите его, возьмите еще 8, затем вычислите его.

допустим, у меня есть этот массив

array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] 

Я хочу взять [0,1,2,3,4,5,6,7] XOR с [0,0,0,0,0,0,0,0], затем взять другой массив [8,9,10,11,12,13,14,15] XOR со значением из другого расчета и т. Д.

мой вопрос, как я могу взять значение 8 массива?

спасибо, ребята

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

В python вы можете нарезать список со следующим синтаксисом:

array[start: end]

Вы можете использовать цикл for, чтобы перебирать список с шагом 8, получая все фрагменты.Например:

array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] 
for counter in range(0,len(array), 8):
    subarray = array[counter:counter+8]
    print(subarray)
0 голосов
/ 07 июля 2019

В документации к itertools есть рецепт с именем "grouper", который вы сможете скопировать.Это вернет итерацию, которая возвращает ваш список кусками любого размера

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
...