2017-09-25 78 views
-1

假設我想計算n,打印全部a_1 +a_2 + ... + a_n其中a_i是小於n的自然數。在python中做一個「抽象」循環

n爲「小」(例如n = 3)的情況下,我使用以下代碼。

from itertools import product 
n=3 
for a_1,a_2,a_3 in product(range(n),repeat=n): 
    print a_1+a_2+a_3 

但如果n是 「大」,說n = 10,我需要類型

from itertools import product 
n=10 
for a_1,a_2,a_3,a_4,a_5,a_6,a_7,a_8,a_9,a_10 in product(range(n),repeat=n): 
    print a_1+a_2+a_3+a_4+a_5+a_6+a_7+a_8+a_9+a_10 

如果我想計算n = 100,這種類型將是非常可怕的!我們有其他方法嗎?

+0

不是嵌套for循環工作? –

回答

7

不要把它解析:

for t in product(range(n), repeat=n): 
    print sum(t) 

通過使用一個變量,你是暗示你不知道的元組將有多大,因此不能有意義解壓。你的代碼將不得不相應調整。

+0

我決定刪除我的答案,並將我的內容移至您的帖子。我相信這是一個有效的答案,但無論出於何種原因,它都被低估了。希望你不介意編輯。如果你不喜歡它,你可以回滾。 –

+0

我不喜歡它;沒有理由爲了消除一行而混淆代碼。這個問題更多的是關於迭代遍歷未知長度的一系列元組,而不是循環的特定主體。 – chepner

+0

您有權發表您的意見。 –