问题描述
我尝试使用map和sum计算两个列表中每个数字的总和。最后我得到一个整数。
a = [1,2,3,4]
b = [2,4,5]
answer = list(map(sum,a,b))
>>> TypeError: 'int' object is not iterable
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
可能正是您想要的(请参见上面的答案)
sum(可迭代,/,start = 0)
总和从左至右开始,并迭代一个项目,并返回总计。可迭代项通常是数字,并且起始值不允许为字符串。
sum并没有达到您的期望。您可以创建自己想要的总和来实现自己的目标:
def mysum(*args): return sum(args)
print(mysum(1,2,3,4,5)) # 15