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] 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 函数隐式返回评估其中代码的结果值。不过,代码必须可以表示为单个复合表达式(也称为单行代码)。

关于python - lambda 中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981889/

相关文章:

python - 对角线等于零且 [x,y] =-[y,x] 的 numpy 数组

python - 用于 python 的 vba 样式编译器/gui

python - PyMongo:更新,$multi:false,获取更新文档的 _id?

python - 如何从 XPath 查询中的先前属性值中提取嵌入的属性值?

node.js - 在AWS lambda上调用中间件函数(不带express)

java - 在 Java 8 中使用 lambda 表达式打印列表(不包含重复项)

c# - MongoDb 驱动程序中的 Lambda 语法用于更新文档中的数组元素

python - 如何让 optparse 的 OptionParser 忽略无效选项?

java - Java 8 是否支持本地 lambda 变量?

c# - Linq - 如何选择一个新对象来包含其他对象的列表?