我正在编写一些 lambda 函数,但无法弄清楚。有没有办法lambda x: x if (x<3)
在python中有类似的东西?lambda a,b: a if (a > b) else b
工作正常。到目前为止lambda x: x < 3 and x or None
似乎是我发现的最接近的。
问问题
97527 次
4 回答
81
与任何函数一样,lambda 必须有返回值。
lambda x: x if (x<3)
不起作用,因为它没有指定如果没有返回什么x<3
。默认情况下函数 return None
,所以你可以这样做
lambda x: x if (x<3) else None
但也许您正在寻找的是带有if
条件的列表理解。例如:
In [21]: data = [1, 2, 5, 10, -1]
In [22]: [x for x in data if x < 3]
Out[22]: [1, 2, -1]
于 2012-10-03T13:05:54.687 回答
5
有什么问题lambda x: x if x < 3 else None
?
于 2012-10-03T13:04:48.093 回答
2
您始终可以尝试调用“过滤器”进行条件检查。从根本上说,map()
必须处理每次出现的迭代,所以它不能挑选。但过滤器可能有助于缩小选择范围。例如,我创建了一个从 1 到 19 的列表,但想创建一个只有偶数平方的元组。
x = list(range(1,20))
y = tuple(map(lambda n: n**2, filter(lambda n: n%2==0,x)))
print (y)
于 2017-04-07T23:51:53.563 回答