python - 如何在元组列表上使用 reduce 函数?

标签 python list tuples reduce

我有这个元组列表:

  a = [(1, 2), (1, 4), (1, 6)]

我想使用 reduce 函数来获得这个结果:

  (3, 12)

我试过:

  x = reduce(lambda x, y: x+y, a)

但是我得到一个错误...我想将每个元组的第一个索引中的所有元素相加,然后将第二个元素相加。

最佳答案

如果你希望reduce的输出是一个元组,那么所有的中间结果也应该是一个元组。

a = [(1, 2), (1, 4), (1, 6)]
print reduce(lambda x, y: (x[0] + y[0], x[1] + y[1]), a)

输出

(3, 12)

编辑如果你想在列表为空时得到(0, 0)

a = []
print reduce(lambda x, y: (x[0] + y[0], x[1] + y[1]), [(0, 0)] + a)

输出

(0, 0)

编辑 2:减少接受 default initializer作为最后一个参数,这是可选的。通过使用它,代码变为

a = []
print reduce(lambda x, y: (x[0] + y[0], x[1] + y[1]), a, (0, 0))

关于python - 如何在元组列表上使用 reduce 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19763132/

相关文章:

python - 如何根据列表移动数据框中的值?

list - 如何在 SwiftUI 的列表中启用选择

python - 如何根据一个单词是另一个列表的成员来计算它的重复出现

python - 如何从元组列表形成字典?

C++17 元组拆包

C++使用谓词在元组列表中查找元素

python - python从本地目录导入所有图像

python - Sqlite3 无法正确查询 UTF-8 字符串?

python - 如何在凸包中获得均匀分布的点?

python - 如何在 python 中使用 strip()