嗨,我已经看过论坛了,但没有找到解决我问题的方法。问题是:我怎样才能找到 S 大小的列表的所有可能子集[长度为 l]。并将其返回到列表中。
问问题
146 次
1 回答
1
In [162]: x=[1,2,3]
...: from itertools import combinations
...: print [subset for i in range(len(x)+1) for subset in combinations(x, i)]
#outputs: [(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
做到这一点没有组合:
In [237]: import numpy as np
...: x=np.array([1,2,3])
...: n=2**len(x)
...: res=[]
...: for i in range(0, n):
...: mask='{0:b}'.format(i).zfill(len(x))
...: mask=np.array([int(idx) for idx in mask], bool)
...: res.append(x[mask].tolist())
...: print res
#output: [[], [3], [2], [2, 3], [1], [1, 3], [1, 2], [1, 2, 3]]
于 2014-01-16T14:50:23.160 回答