python - 组合列表

标签 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)

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

最佳答案

它们看起来不像位模式 (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

为此我们需要组合数学吗?

输出:

['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']
.......

关于python - 组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819658/

相关文章:

python - df.reset_index(drop=true) 可以在 Python Pandas 中设置为默认值吗?

Python搜索文件夹并制作字典

c++ - 使用外力时确定球体与平面之间的静止接触

algorithm - 二分图论 - 从二分邻接矩阵中找到成对重叠(共享边)

java - 在 Java 中处理大量数据的有效方法

python - 测量点之间的总数和平均距离 - python

python - 用 Python 编码日语

python - 如何使用 sklearn 管道实现缓存

python - 在A和B之间交换元素以获得总和相等

java - 在扫雷器中需要有关显示相邻图 block 的算法帮助