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)])
我想将下面的元组列表中的数字 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)])