2016-10-03 138 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

如果解决了您的问题,您可以接受。 –