有if但没有els的Python lambda

2024-04-24 19:51:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写一些lambda函数,但没能搞清楚。有没有办法在python中有类似lambda x: x if (x<3)的东西?因为lambda a,b: a if (a > b) else b工作正常。到目前为止lambda x: x < 3 and x or None似乎是我发现的最接近的。


Tags: orandlambda函数noneifelse办法
3条回答

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]

很抱歉救活了一个僵尸。

我在寻找同一个问题的答案,我发现“filter”正是我想要的:

>>> 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#filterhttps://docs.python.org/3/library/functions.html#filter

lambda x: x if x < 3 else None怎么了?

相关问题 更多 >