【问题标题】:In Python how to access elements of tuples using reduce()?在 Python 中如何使用 reduce() 访问元组的元素?
【发布时间】:2015-03-18 04:31:18
【问题描述】:

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

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

我得到一个错误:

TypeError: 'int' object is not iterable

如何解决此错误?谢谢

【问题讨论】:

    标签: python list-manipulation


    【解决方案1】:

    您正在尝试添加元组列表。因此,您的 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)])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      相关资源
      最近更新 更多