递归for循环

时间:2017-06-23 02:10:23

标签: python for-loop recursion

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循环,但我不知道该怎么做。感谢。

1 个答案:

答案 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)阅读有关子集的更多信息,如果需要,可以阅读源代码。