【发布时间】: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列表。