def product(n,p=2):
productList = []
for k in range(10**(n-1),10**n):
for kk in range(10**(n-1),10**n):
productList.append([k,kk,k*kk])
return productList
此函数应返回包含2位数字乘积的列表。 如何创建一个返回p位数字乘积的函数? 因此,如果p = 4,它应该返回4位数的乘积。
我认为你需要为这些东西嵌套for循环,但我不知道该怎么做。感谢。
答案 0 :(得分:1)
SymPy中的电池已包含在内:
from sympy.utilities.iterables import subsets
from sympy.core.mul import prod
numbers = [1, 2, 3] # or whatever factors you want
p = 2 # how many factors you want
for n in subsets(numbers, p, repetition=True):
print(n + (prod(n),))
此输出
(1, 1, 1)
(1, 2, 2)
(1, 3, 3)
(2, 2, 4)
(2, 3, 6)
(3, 3, 9)
这与购物车(或产品)的不同之处在于您不会获得这些因素的排列,例如:后者也会给(2,1,2)一个(1,2,2)的排列。您可以在SymPy中使用help(subsets)
阅读有关子集的更多信息,如果需要,可以阅读源代码。