在此示例中,我遍历了掩码的所有可能变体,并将其存储为布尔值列表
Nmax = 32
for num in range (2**Nmax):
bool_list = [bool(num & (1<<n)) for n in range(Nmax)]
# other stuff
但是,生成bool_list
的操作在代码中有点瓶颈-其余的是相当快的矩阵乘法。是否有比我正在做的增加存储在bool_list
中的数字更快的方法?
答案 0 :(得分:1)
您只是将{False,True)Nmax
次的所有组合。因此,
from itertools
print(list(itertools.product(*[(False, True)]*Nmax)))
将显示所有遮罩。
如果要在迭代时使用它,
Nmax = 32
masks = itertools.product(*[(False, True)]*Nmax)
for mask in masks:
# Do stuff
请注意,mask
将是一个元组而不是一个列表。
答案 1 :(得分:0)
对于一个,我认为您可以预先计算这些变化:
Nmax = 32
shifts = [(1 << n) for n in range(Nmax)]
for num in range(2**Nmax):
bool_list = [bool(num & shift) for shift in shifts]