我想将下面的元组列表中的数字 1、2、3 加在一起。我试过了:
reduce(lambda (x,y),(z,t): y+t,[('a',1),('b',2),('c',3)])
我收到一个错误:
TypeError: 'int' object is not iterable
如何修复此错误?谢谢
我想将下面的元组列表中的数字 1、2、3 加在一起。我试过了:
reduce(lambda (x,y),(z,t): y+t,[('a',1),('b',2),('c',3)])
我收到一个错误:
TypeError: 'int' object is not iterable
如何修复此错误?谢谢
您正在尝试添加元组列表。因此,您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)])