lambda与Python3中的减少错误

时间:2017-12-21 11:58:17

标签: python lambda reduce

我正在尝试使用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的语法应该是什么建议吗? 感谢。

1 个答案:

答案 0 :(得分: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