0

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

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

我收到一个错误:

TypeError: 'int' object is not iterable

如何修复此错误?谢谢

4

1 回答 1

3

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

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)])
于 2015-03-18T04:43:18.190 回答