1

我尝试使用 map 调用的 lambda 函数初始化一个数组,令我惊讶的是,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'

非常有趣...这是单行表达式,这就是它工作的原因

4

1 回答 1

5

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

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

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

于 2012-10-19T20:22:37.377 回答