在地图中使用带有两个迭代器的sum

问题描述

我尝试使用map和sum计算两个列表中每个数字的总和。最后我得到一个整数。

a = [1,2,3,4]
b = [2,4,5]
answer = list(map(sum,a,b))

>>> TypeError: 'int' object is not iterable

但是当我用两个参数写一个lambda函数时,一切都很好。

a = [1,5]

answer = list(map(lambda x,y : x + y,b))

是什么原因?地图函数中sum的行为是什么?

解决方法

在每次迭代中,它将像play/pause一样工作,并抛出该错误:

sum(1,2)

>>> sum(1,2) Traceback (most recent call last): File "<stdin>",line 1,in <module> TypeError: 'int' object is not iterable 等效于lambda x,y: x + y

operator.add
,

EDIT operator.add可能正是您想要的(请参见上面的答案)

documentation

sum(可迭代,/,start = 0)

总和从左至右开始,并迭代一个项目,并返回总计。可迭代项通常是数字,并且起始值不允许为字符串。

sum并没有达到您的期望。您可以创建自己想要的总和来实现自己的目标:

def mysum(*args): return sum(args)
print(mysum(1,2,3,4,5)) # 15