ts = ['t1','t2','t3',...,'tn']
的名单有实现这一条款的所有可能的Q-长度组合的任务。
因此,
ts = ['t1','t2']
q = 4
答案是
[['t1','t1','t1','t1'],['t1','t2','t2','t2'],['t1','t1','t2','t2'],
['t1','t1','t1','t2'],['t2','t2','t2','t2']]
这里是我的解决方案
powers = np.array(list(itertools.product(*[range(q+1)]*len(ts))))
powers = powers[np.where(np.asarray(map(sum, powers))==q)]
res = map(lambda ps_: flatten([ p*[t] for p,t in zip(ps_,ts) ]), powers)
其中flatten是从列表的列表产生列表功能。
虽然有解决方案,产生所需的结果,我想知道是否有更简单的方法来解决这个问题?
这些不是排列组合。他们可能与替换组合。 –
谢谢,我错过了,做了一个更正。 – tarashypka