使用 map 对 list 的元素求和

新手上路,请多包涵

我想知道是否可以使用 map 来对列表的元素求和。

假设 a = [1, 2, 3, 4]

list(map(sum, a)) 会给出一个错误 int object is not iterable 因为列表需要迭代。

map(sum, a) 是一个有效的陈述,但鉴于对象,我没有看到取消引用它的简单方法。

[map(sum, a)] 将返回列表中的一个对象

这个 答案表明它应该很容易。我在这里错过了什么?

原文由 Adorn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 869
2 个回答
x = list(map(sum,a))

相当于

x = []
for i in a:
    x.append(sum(i))

Sum 需要一个可迭代的对象来应用 sum。如果您看到文档语法是这样的 sum(iterable[, start]) 。由于 int 不是可迭代的,因此您会收到该错误。

原文由 Bharath 发布,翻译遵循 CC BY-SA 3.0 许可协议

map 对列表中的每个元素应用一个函数。相反,您可以使用 reduce

 a = [1, 2, 3, 4]
sum_a = reduce(lambda x, y:x+y, a)

在这种情况下,纯粹可以使用 sum ,但是,为了更实用, reduce 是更好的选择。

或者,在 Python3 中:

 from functools import reduce
a = [1, 2, 3, 4]
sum_a = reduce(lambda x, y:x+y, a)

原文由 Ajax1234 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题