python 中是否有任何内置的 lambda for is notNone
Is there any built in lambda for is notNone in python
我看到下面的成语在pythonX = filter(lambda x: x is not None, X))
中重复了几次
我希望在 python 中有一个用于 is not None
的内置函数(在其标准库中或类似于 java 的 apache-commons 的东西)。
在我的代码中,我将其组织为
def isNotNone(X: Any) -> bool:
return True if X is not None else False
X = filter(isNotNone, X)
您可以使用 None.__ne__
,即 None
:
的不相等检查
>>> lst = [0, [], None, ""]
>>> list(filter(None.__ne__, lst))
[0, [], '']
从技术上讲,这不会测试 x is not None
但 x != None
, 可能 在某些情况下会产生不同的结果,例如对于 类 比较等于 None
,但对于大多数实际情况,它应该可以工作。
正如评论中所指出的,对于 Python 的所有版本,这并不相同——或者甚至没有定义——一些正确返回 True
或 False
和其他人对大多数值产生 NotImplemented
,这也巧合地“有效”,但不应依赖。相反,定义您自己的 def
或 lambda
或(对于此用例)使用列表理解可能是一个更好的主意。
我看到下面的成语在pythonX = filter(lambda x: x is not None, X))
我希望在 python 中有一个用于 is not None
的内置函数(在其标准库中或类似于 java 的 apache-commons 的东西)。
在我的代码中,我将其组织为
def isNotNone(X: Any) -> bool:
return True if X is not None else False
X = filter(isNotNone, X)
您可以使用 None.__ne__
,即 None
:
>>> lst = [0, [], None, ""]
>>> list(filter(None.__ne__, lst))
[0, [], '']
从技术上讲,这不会测试 x is not None
但 x != None
, 可能 在某些情况下会产生不同的结果,例如对于 类 比较等于 None
,但对于大多数实际情况,它应该可以工作。
正如评论中所指出的,对于 Python 的所有版本,这并不相同——或者甚至没有定义——一些正确返回 True
或 False
和其他人对大多数值产生 NotImplemented
,这也巧合地“有效”,但不应依赖。相反,定义您自己的 def
或 lambda
或(对于此用例)使用列表理解可能是一个更好的主意。