How to get all combination of n binary value?
本问题已经有最佳答案,请猛点这里访问。
在python中,如何获得
例如,如果
1 | [ [0,0,0], [0,0,1], [0,1,0], [0,1,1], ... [1,1,1] ] #total 2^3 combinations |
我该怎么做?
使用
1 2 | import itertools lst = list(itertools.product([0, 1], repeat=3)) |
这将生成一个元组列表(请参见此处)
您可以轻松地将其更改为使用变量
1 2 | n = 3 lst = list(itertools.product([0, 1], repeat=n)) |
如果需要列表列表,那么可以使用
1 | lst = map(list, itertools.product([0, 1], repeat=n)) |
或者在Python 3中:
1 2 3 | lst = list(map(list, itertools.product([0, 1], repeat=n))) # OR lst = [list(i) for i in itertools.product([0, 1], repeat=n)] |
请注意,使用
如果不使用任何内置函数或智能技术,我们可以得到这样的结果
1 2 3 4 5 6 | def per(n): for i in range(1<<n): s=bin(i)[2:] s='0'*(n-len(s))+s print map(int,list(s)) per(3) |
输出
1 2 3 4 5 6 7 8 | [0, 0, 0] [0, 0, 1] [0, 1, 0] [0, 1, 1] [1, 0, 0] [1, 0, 1] [1, 1, 0] [1, 1, 1] |
下面将给出所有这些组合
1 2 | bin = [0,1] [ (x,y,z) for x in bin for y in bin for z in bin ] |