我正在编写一些 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 似乎是我发现的最接近的。

有帮助吗?

解决方案

与任何函数一样,lambda 必须有一个返回值。

lambda x: x if (x<3) 不起作用,因为它没有指定如果没有则返回什么 x<3. 。默认情况下函数返回 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]

其他提示

出了什么问题 lambda x: x if x < 3 else None?

抱歉,让僵尸复活了。

我正在寻找同一问题的答案,我发现“过滤器”恰恰提供了我正在寻找的内容:

>>> data = [1, 2, 5, 10, -1]
>>> filter(lambda x: x < 3, data)
[1, 2, -1]

2.x 和 3.x 中的实现是相同的:https://docs.python.org/2/library/functions.html#filter https://docs.python.org/3/library/functions.html#filter

您始终可以尝试调用“过滤器”进行条件检查。从根本上来说, map() 必须对每次出现的迭代进行处理,因此它无法进行挑选。但过滤可能有助于缩小选择范围。例如,我创建一个从 1 到 19 的列表,但想创建一个元组 仅由偶数组成的平方。

x = list(range(1,20))

y = tuple(map(lambda n: n**2, filter(lambda n: n%2==0,x)))

print (y)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top