lambda内的条件

时间:2012-10-19 20:21:19

标签: python lambda

我尝试使用map调用的lambda函数初始化一个数组,而我的surprize IF-ELSE在lambda中无效。

a = map( (lambda x: if (len(aDict[x])==m): return aDict[x] else: return false),
         aDict.keys())

这是我得到的错误

File "objects.py", line 63
a = map( (lambda x: if (len(aDict[x])==m): return aDict[x] else: return false),
                     ^
SyntaxError: invalid syntax

这不起作用的原因是什么?


编辑:

现在我发现了有趣的替代表达式

>>> False and 'one' or 'two'
'two'
>>> True and 'one' or 'two'
'one'

非常有趣......这是单行表达,这就是为什么它

1 个答案:

答案 0 :(得分:5)

您不能在lambda中使用该语法,也不能显式返回。试试这个:

lambda x, m: aDict[x] if (len(aDict[x])==m) else False

Lambda函数隐式返回通过评估其中的代码而得到的值。代码必须可以表达为单个复合表达式(也称为单行)。