好吧,你不需要 lambda 来做到这一点......
sum(a*b for a, b in zip(list1, list2))
even zip()
稍微不太完美......为了避免创建列表,可以使用 python3,或者itertools.izip
:
sum(a*b for a, b in itertools.izip(list1, list2))
但是,如果出于某种 craaaaazy 的原因,您真的很想使用 lambda,请将每个列表分别传递给映射:
sum(map(lambda a, b: a*b, list1, list2))
即便如此,您也不需要 lambda,可调用产品可以在operator
module:
sum(map(operator.mul, list1, list2))
但在第一个或第二个示例中使用生成器,通常会更快。