0

所以我有一个包含十四个项目的数组。每个项目可以是 0 或 1。我正在寻找一些帮助来找出这些数字的每个组合。我已经尝试过 itertools 但我似乎无法让它像我想要的那样工作。我的意思的一个例子就是这个。

   for i in range(0, 15):
       if i%2 == 0:
            array1.append(b)
       else:
            array1.append(c)

   for i in range(0, 14):
for L in range(14, 15):
    for subset in itertools.combinations(array1, L):
        if s != str(subset):
            s = str(subset)
            y += 1
                print(subset)

这是代码,但明显的问题是数组按照 l 然后 r 的确切顺序填充,但我需要的是每个都可以互换。

加起来是十四。有谁知道如何做到这一点?

4

2 回答 2

6

您可以使用itertools.product

itertools.product([0, 1], repeat=14)

您可以通过执行以下操作获取这些结果的列表:

list(itertools.product([0, 1], repeat=14))

或者您可以通过执行以下操作迭代所有可能性:

for item in itertools.product([0, 1], repeat=14):
    print item
于 2013-11-01T20:34:32.383 回答
0

一种简单的方法是从0to计数(1 << 14) - 1,然后考虑计数器的所有二进制数字;在 Python 中:

for i in xrange(1 << 14):
    bits = [(i >> k) & 1 for k in xrange(14)]
    ... use bits array ...
于 2013-11-01T20:33:29.970 回答