【问题标题】:How do you reduce a list of tuples in Python 3?如何在 Python 3 中减少元组列表?
【发布时间】:2018-10-01 14:30:42
【问题描述】:

问题

输入:

input_list = [(1, 2), (1, 4), (1, 6)]

预期输出:

(3, 12)

我试过了

print(reduce(lambda a, b: (a[0] + b[0], a[1] + b[1]), input_list))

print(reduce(lambda (a, b), (c, d): (a + c, b + d), input_list))

由于语法无效,两者都失败了。

【问题讨论】:

  • 我认为这里的问题更多地与 为什么 一个看起来正确的解决方案包含语法错误有关,而不是如何进行元组的成对添加。
  • @miradulo 这似乎是一个关于如何使用reduce 尤其是python 3 来执行此操作的问题,这表明它与提议的重复项无关,无论如何,IMO。
  • 不管他们是否更感兴趣的是为什么使用保留关键字是语法错误或求和元组,这已经出现了很多很多次。
  • 让这成为一个教训(1)总是在发布代码之前运行代码(2)复制粘贴完整的实际回溯。

标签: python list tuples reduce


【解决方案1】:

在 Python 3 中,reducebuiltins 移动到functools,因此您需要from functools import reduce

【讨论】:

  • 这将产生NameError,而不是SyntaxError
  • @chepner 我们从未确认它确实是SyntaxError,只是“由于语法无效而失败”,这可能是人类对各种类型错误的解释。
  • 我们也没有任何确认代码前面没有from functools import reduce
  • @chepner 但是与 Python 3 的联系提供了一些证据表明这是问题的一部分,所以我关于这个人为什么会遇到麻烦的后验信念会对涉及该因素的解释有一定的密度。
  • 谢谢!这解决了第一种样式的问题(使用方括号),尽管它没有解决第二种样式的问题。不过,这对我来说已经足够了。旁注:我觉得很奇怪我如何能够在不导入非元组列表的情况下使用 reduce。
猜你喜欢
  • 1970-01-01
  • 2014-07-01
  • 2014-12-04
  • 2015-07-17
  • 1970-01-01
  • 2011-12-31
  • 2023-03-14
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多