2016-10-03 100 views
0

我有以下問題: 我想遍歷一個給定的列表,並返回最小的所有可能的笛卡爾乘積之和:功能用於遍歷所有元組

from itertools import product 

z = ((1, 2),(2, 3)) 

def zmin(tup): 
    return min(sum(a*a for a in s) for s in product(tup)) 

zmin(z) --> ERROR MESSAGE 

正確的答案應該是這樣的:

1*1 + 2*2 = 5 
1*1 + 3*3 = 10 
2*2 + 2*2 = 8 
2*2 + 3*3 = 13 

這樣ZMIN(Z)= 5

的返回值,你知道我在做什麼錯? 還有一種顛簸或類似的有效方法?

+0

請始終包含錯誤信息。它可能告訴你到底你的代碼有什麼問題:這個'product'至少需要兩個參數,而你只能傳遞一個參數。 –

回答

0

我發現了一個soloution自己: 我加*args的返回值:

def zmin(tup): 
    return min(sum(a*a for a in s) for s in product(*tup)) 
+0

如果解決了您的問題,您可以接受。 –