迭代对元组的函数

时间:2016-10-03 14:55:39

标签: python tuples itertools

我有以下问题: 我想迭代给定的列表并返回所有可能的笛卡尔积的总和的最小值:

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

你知道我做错了什么吗? 还有一种有效的方式与坎坷或类似的东西?

1 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案: 我为返回值添加了*args

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