我对生成N
变量的所有二进制组合感兴趣,而不必实现手动循环,即在N上迭代N次,每次在N/2
上循环等等。你知道吗
我们在python中有这样的功能吗?你知道吗
例如:
我有N
个二进制变量:
pool=['A','B','C',...,'I','J']
len(pool)=10
我想从这些空间中生成2^10=1024
空间,例如:
[A B C ... I J]
iter0 = 0 0 0 ... 0 0
iter1 = 0 0 0 ... 0 1
iter2 = 0 0 0 ... 1 1
...
iter1022 = 1 1 1 ... 1 0
iter1023 = 1 1 1 ... 1 1
你看,我这里没有重复,每个变量在每个iter序列中启用一次。如何使用Python的itertools
实现这一点?你知道吗
^{} with the ^{} parameter 是最简单的答案:
每个变量的值在右侧循环最快,在左侧循环最慢,因此您将得到:
等等,你可能会意识到:这只是一个递增的10位数字的二进制表示。根据您的需要,您实际上可能只想:
然后用
1 << 9
屏蔽i
,得到A
、1 << 8
的值,依此类推,直到1 << 0
(即1
)的值。如果目标只是打印它们,您甚至可以通过二进制字符串化,然后使用join
插入分隔符来实现:相关问题 更多 >
编程相关推荐