Имея список русских терминовСформировать все полиномиальные члены определенной степени
ts = ['t1','t2','t3',...,'tn']
есть задача достичь всех возможных комбинаций д-длина этого условия.
Таким образом, для
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