在Python中,如何使用reduce()访问元组元素?
我想把下面的元组列表中的数字1,2,3加在一起。我试过:在Python中,如何使用reduce()访问元组元素?,python,list-manipulation,Python,List Manipulation,我想把下面的元组列表中的数字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)
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(x[1] for x in [('a',1),('b',2),('c',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(x[1] for x in [('a',1),('b',2),('c',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(x[1] for x in [('a',1),('b',2),('c',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(x[1] for x in [('a',1),('b',2),('c',3)])