微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在地图中使用带有两个迭代器的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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。