在 Python3 中减少错误的 lambda
lambda with reduce error in Python3
我正在尝试按如下方式使用 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
而完全相同的行 returns 在 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 中删除,因此尝试:
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
我正在尝试按如下方式使用 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
而完全相同的行 returns 在 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 中删除,因此尝试:
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