我正在尝试使用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的语法应该是什么建议吗? 感谢。
答案 0 :(得分:1)
元组模式匹配 ,请尝试:
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