【问题标题】:lambda with reduce error in Python3 [duplicate]lambda在Python3中减少错误[重复]
【发布时间】:2018-06-04 02:31:00
【问题描述】:

我正在尝试按如下方式使用reduce:

>>> reduce(lambda z,(x,y): (z+1) if x == y else z, [(3, 4), (5, 2), (4, 4), (5, 5)], 0)

在 Python 2.7 中,我得到了预期:

2

虽然完全相同的行在 Python 3.5 中返回以下错误:

File "<stdin>", line 1
reduce(lambda z,(x,y): (z+1) if x == y else z, [(3, 4), (5, 2), (4, 4), (5, 5)], 0)
                ^

SyntaxError: invalid syntax

对 Python 3 的语法有什么建议吗? 谢谢。

【问题讨论】:

  • 是的,这实际上是python 3中删除了元组参数解包这一事实的结果。检查PEP3113
  • 虽然你可以在这里修复错误,但更优雅的方法可能是sum(x == y for x, y in data)data 列表。

标签: python lambda reduce


【解决方案1】:

元组模式匹配已从 python 3 中移除,因此请尝试:

reduce(lambda z, x: (z+1) if x[0] == x[1] else z, [(3, 4), (5, 2), (4, 4), (5, 5)], 0)

正如@cᴏʟᴅsᴘᴇᴇᴅ 评论的那样,请查看PEP3113

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-05
    • 2017-10-19
    • 2023-03-10
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多