2014-09-24 69 views

回答

1

对于你必须处理多个嵌套循环的问题,Python标准库中提供了一个名为itertools.product

你的具体情况方便的工具,你需要做的是包装范围为itertools.product,并通过repeat参数指定多少个嵌套循环。 itertools.product,必然执行笛卡儿积。

def loop_rec(y, n): 
    from itertools import product 
    for elems in product(range(y),repeat=n): 
     # sum(args) 
     # x,y,z ....(n) terms = elems 
     # index elems as elems[0], elems[1], .... 

根据您的要求,您可能要使用的每个笛卡尔积的整个元组,或希望索引元组单独,或者如果你知道循环的深度,你可以把它分配给变量。

谢谢,但如果我想改变每个循环的范围,即如何处理。我 在范围(N)中,j在范围(N-1)中,k在范围(N-2)

假设,要变化的范围从m至n个即范围(n)的,范围(n-1),范围(n-2),...范围(m)。您可以将产品重写为

product(*map(range, range(m,n))) 

+0

谢谢,但是如果我想改变每个循环的范围,即如何。我在范围(n),j在范围内(n-1),k在范围内(n-2)...等 – Jonathan 2014-09-24 17:00:20

+0

@Jonathan:查看我的更新回答。 – Abhijit 2014-09-24 17:04:53