Python lambda中的条件句

Python lambda中的条件句,python,lambda,Python,Lambda,我尝试用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]

我尝试用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'

非常有趣。。。这是一个线性表达式,这就是为什么不能在lambda中使用该语法,也不能显式返回。请尝试以下方法:

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

Lambda函数隐式返回对其中的代码求值所得的值。代码必须可以表示为一个复合表达式,也就是一行代码。

不能在lambda中使用该语法,也不能显式返回。请尝试以下方法:

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

Lambda函数隐式返回对其中的代码求值所得的值。代码必须可以表示为单个复合表达式,也就是一行代码。

如果条件为true,我希望它返回x。否则就错了。如何返回X?我所说的和你所想的一样。如果只需要x,请使用lambda x,如果lenaDict[x]==m else False,则使用m:x。@alinsoar您不会从lambda返回任何内容。你只是在那里放了一个表达式……你能给我提供一个web上的链接吗?在这个链接中,lambda中的if-else语法以及lambda中的限制都得到了解释?if/else语法不是lambda特有的,它可以在任何地方使用。如果b或2完全有效,则a=1。关键是lambdas只能处理一行代码表达式,这就是以一行代码形式编写if/else的方法。否则就错了。如何返回X?我所说的和你所想的一样。如果只需要x,请使用lambda x,如果lenaDict[x]==m else False,则使用m:x。@alinsoar您不会从lambda返回任何内容。你只是在那里放了一个表达式……你能给我提供一个web上的链接吗?在这个链接中,lambda中的if-else语法以及lambda中的限制都得到了解释?if/else语法不是lambda特有的,它可以在任何地方使用。如果b或2完全有效,则a=1。关键是lambdas只能使用一行表达式,这是以一行形式编写if/else的方式。编辑工作正常是因为Python返回了在布尔表达式中计算的最后一个术语,并且布尔计算在可能的情况下也会短路。因此,作为一个例子,“a”返回。但是,与if/else相比,它的可读性要差得多,因此,除非出于性能原因需要它,否则这可能不是最好的方法。您的编辑工作正常,因为Python会返回在布尔表达式中计算的最后一个术语,布尔计算也会在可能的情况下短路。因此,作为一个例子,“a”返回。不过,与if/else相比,它的可读性要差得多,因此,除非出于性能原因需要它,否则它可能不是最好的方法。