在本例中,我将迭代所有可能的掩码变体,并将其存储为布尔列表
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中的数量?
发布于 2018-08-30 16:44:55
您只需要(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将是一个元组,而不是一个列表。
发布于 2018-08-30 16:40:48
首先,我认为你可以预先计算轮班:
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]https://stackoverflow.com/questions/52101758
复制相似问题