组合清单

dem*_*mas 2 python algorithm

我有一个长度为N的列表,此列表的每个元素都是0或1.我需要获得此列表的所有可能组合.这是我的代码:

def some(lst):
    result = []
    for element in lst:
        c1 = copy.copy(element)
        c2 = copy.copy(element)
        c1.append(0)
        c2.append(1)
        result.append(c1)         
        result.append(c2)
    return result

def generate(n):
   if(n == 1):
       return [[0], [1]]
   else:
        return some(generate(n - 1))    

print generate(4)
Run Code Online (Sandbox Code Playgroud)

我认为这个任务有更多的pythonic解决方案.提前致谢.

pyf*_*unc 5

它们看起来不像位模式(0000 .... 1111),即二进制位.并且n个二进制位的所有可能组合将在0到2**n -1的范围内

noOfBits = 5
for n in range(2**noOfBits):
    binVal = bin(n)[2:].zfill(noOfBits)
    b = [ x for x in binVal]
    print b
Run Code Online (Sandbox Code Playgroud)

为此我们需要组合学吗?

输出:

['0', '0', '0', '0', '0']
['0', '0', '0', '0', '1']
['0', '0', '0', '1', '0']
['0', '0', '0', '1', '1']
['0', '0', '1', '0', '0']
['0', '0', '1', '0', '1']
.......
Run Code Online (Sandbox Code Playgroud)