【发布时间】:2022-01-11 23:18:30
【问题描述】:
我想解决一个组合问题。给定一个变量列表,我想获得由这些变量组成的具有给定顺序的所有多项式项。例如,对于给定的数字列表 [x1, x2, x3] 和 2 的顺序,该函数应返回 [x1^2, x1*x2, x1*x3, x2^2, x2*x3, x3^2] 的列表;对于给定的数字列表 [x1, x2] 和 3 的顺序,该函数应返回 [x1^3, x1^2*x2, x1*x2^2, x2^3] 的列表
如果我在第一个示例中使用 for 循环,代码将如下所示:
for i in range(given_order+1):
for j in range(given_order+1-i):
for k in range(given_order+1-j-i):
list.append(x1^i*x2^j*x3^k)
但是给定列表的长度和给定的顺序都不是固定的,所以for循环的数量是不确定的。我试图使用递归来解决它,但失败了。有人可以帮我解决这个问题吗?
【问题讨论】:
-
你试过
for (a1, a2, ..., an) in itertools.permutations([x1, x2, ..., xn], r=n): list.append(a1 * a2 * ... * an)吗? -
@Green Cloak Guy。感谢您的提示,itertools.combinations_with_replacement 可以解决问题。
标签: python loops recursion combinations