此问题已经在这里有了答案:
我有一个看起来像这样的reduce
函数:
reduce(lambda x, y: x + y, [foo(x) for x in listValue], [])
[我还有另一个称为goo
的函数,我想在x
达到某种条件时使用它,例如reduce内的x >= 10
。
我的想法是:
reduce(lambda x, y: x + y, [foo(x) for x in listValue if x < 10 else goo(x)], [])
但是那给了我一个错误:
File "<stdin>", line 1
reduce(lambda x, y: x + y, [foo(x) for x in listValue if x < 10 else goo(x)], [])
^
SyntaxError: invalid syntax
如何解决?
for
和if
的顺序错误。您首先需要指定if
,然后指定for
。
在您的代码中使用此reduce
:
reduce(lambda x, y: x + y, [(foo(x) if x < 10 else goo(x)) for x in listValue], [])