首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增量存储为布尔人列表的数字

增量存储为布尔人列表的数字
EN

Stack Overflow用户
提问于 2018-08-30 16:32:21
回答 2查看 56关注 0票数 0

在本例中,我将迭代所有可能的掩码变体,并将其存储为布尔列表

代码语言:javascript
复制
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中的数量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-30 16:44:55

您只需要(False,True) Nmax时间的所有组合。因此,

代码语言:javascript
复制
from itertools
print(list(itertools.product(*[(False, True)]*Nmax)))

会展示所有的面具。

如果你想在迭代时使用它,

代码语言:javascript
复制
Nmax = 32
masks = itertools.product(*[(False, True)]*Nmax)
for mask in masks:
    # Do stuff

注意,mask将是一个元组,而不是一个列表。

票数 1
EN

Stack Overflow用户

发布于 2018-08-30 16:40:48

首先,我认为你可以预先计算轮班:

代码语言:javascript
复制
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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52101758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档