2014-09-24 70 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