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 Nonex != None 可能 在某些情况下会产生不同的结果,例如对于 类 比较等于 None,但对于大多数实际情况,它应该可以工作。


正如评论中所指出的,对于 Python 的所有版本,这并不相同——或者甚至没有定义——一些正确返回 TrueFalse 和其他人对大多数值产生 NotImplemented ,这也巧合地“有效”,但不应依赖。相反,定义您自己的 deflambda 或(对于此用例)使用列表理解可能是一个更好的主意。