早上好,我试图做夸克哈希计算,并且我与海绵结构混淆了,特别是在吸收阶段,我有一个数组,长度为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]与[0,0,0,0,0,0,0,0,0]进行异或,然后再获取另一个数组[8,9,10,11,12,13,14,15]将其与其他计算的值进行XOR运算,依此类推。
我的问题是如何取8个数组的值?
谢谢你们
答案 0 :(得分:0)
In the documentation for itertools,有一个您可以复制的食谱叫做“石斑鱼”。这将返回一个迭代器,该迭代器以任意大小的块返回您的列表
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)
答案 1 :(得分:0)
在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)