roo*_*oot 34 python lambda inline-if
我正在编写一些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似乎是我发现的最接近的.
unu*_*tbu 56
与任何函数一样,lambda必须具有返回值.
lambda x: x if (x<3)不起作用,因为它没有指定返回的内容,如果没有x<3.默认情况下函数返回None,所以你可以这样做
lambda x: x if (x<3) else None
Run Code Online (Sandbox Code Playgroud)
但也许你正在寻找的是具有if条件的列表理解.例如:
In [21]: data = [1, 2, 5, 10, -1]
In [22]: [x for x in data if x < 3]
Out[22]: [1, 2, -1]
Run Code Online (Sandbox Code Playgroud)
我发现这filter正是我在 python 2 中寻找的内容:
>>> data = [1, 2, 5, 10, -1]
>>> filter(lambda x: x < 3, data)
[1, 2, -1]
Run Code Online (Sandbox Code Playgroud)
2.x和3.x的实现不同:2.x 提供了一个列表,3.x 提供了一个迭代器。在 3.x 中使用列表理解可能会更干净:
>>> data = [1, 2, 5, 10, -1]
>>> [filter(lambda x: x < 3, data)]
[1, 2, -1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60149 次 |
| 最近记录: |