我有这个元组列表:
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/