打印汇总为

时间:2015-08-07 10:35:44

标签: python

给出N = [10,7,6,5,4,3,2,1]PooledMoney=23

等列表

我需要打印如下所示的所有列表

[10,7,6]
[10,7,5,1]
[10,7,3,2,1]
[10,6,5,2]
[7,6,5,3,2]

这是我的尝试:

for L in range(0,len(N)+1):
    for subset in itertools.combinations(N,L):
        #print subset
        for i in subset:
            sum = sum + i
        if(sum==PooledMoney):
            print subset`

这不会打印正确的子集。

1 个答案:

答案 0 :(得分:0)

你非常接近:

import itertools

l = [1,2,3,4,5,6]
ts = 8

def psl(l, ts):
    for i in range(len(l)):
        for c in itertools.combinations(l, i):
            if sum(c) == ts:
                print list(c)

psl(l, ts)