繁体   English   中英

python中有没有内置的lambda for is notNone

[英]Is there any built in lambda for is notNone in python

我看到以下习语在 python X = 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,它的行为并不相同——或者甚至没有定义——一些正确返回TrueFalse而另一些则为大多数值产生NotImplemented ,巧合的是,这也“有效”,但应该不能依赖。 相反,定义您自己的deflambda或(对于此用例)使用列表def可能是一个更好的主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM