Python 如何使用 reduce() 访问元组的元素?

In Python how to access elements of tuples using reduce()?

我想将下面的元组列表中的数字 1、2、3 相加。我试过了:

reduce(lambda (x,y),(z,t): y+t,[('a',1),('b',2),('c',3)])

我收到一个错误:

TypeError: 'int' object is not iterable

如何修复此错误?谢谢

您正在尝试添加元组列表。因此,您的 lambda 必须 return 一个元组(否则,您将如何将一次调用的结果添加到下一项?),并且您还必须使用作为元组的起始值。像这样的东西有效:

reduce(lambda (x,y),(z,t): (0, y+t),[('a',1),('b',2),('c',3)], (0,0))[1]

你最终得到一个元组 (0, 6) 然后使用 [1] 得到 6.

如果这看起来很难看,那是因为 reduce 不是一个很好的工具。 sum 使用生成器表达式效果更好:

sum(x[1] for x in [('a',1),('b',2),('c',3)])