Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中是否有内置的lambda for Is notNone_Python_Oop_Typing - Fatal编程技术网

python中是否有内置的lambda for Is notNone

python中是否有内置的lambda for Is notNone,python,oop,typing,Python,Oop,Typing,我看到以下习惯用法在python中重复了好几次X=filter(lambda X:X不是None,X)) 我希望python中有一个内置函数,用于而不是None(在其标准库中或类似于ApacheCommonsforJava的东西中) 在我的代码中,我将其组织为 def isNotNone(X: Any) -> bool: return True if X is not None else False X = filter(isNotNone, X) 您可以使用None.\u n

我看到以下习惯用法在python中重复了好几次
X=filter(lambda X:X不是None,X))

我希望python中有一个内置函数,用于
而不是None
(在其标准库中或类似于ApacheCommonsforJava的东西中)

在我的代码中,我将其组织为

def isNotNone(X: Any) -> bool:
    return True if X is not None else False

X = filter(isNotNone, X)

您可以使用
None.\u ne\u
,即
None
的不相等检查:

>>> lst = [0, [], None, ""]

>>> list(filter(None.__ne__, lst))
[0, [], '']

从技术上讲,这并不测试
x不是无
而是
x!=None
,在某些情况下可能会产生不同的结果,例如,对于比较等于None
的类,但在大多数实际情况下,它可能会起作用。

过滤器(None,X)
的作用几乎相同。它过滤掉了
None
,但也过滤掉了0和空字符串,“falsy”对象…
如果X不是None,则返回True,否则返回False
=>
返回X不是None
(更像pythonic!)我会使用
X=(如果elt不是None,则elt用于X中的elt)
取而代之:)很好的观点。使用
过滤器
映射
lambda
是缓慢而复杂的。但是OP正在寻找一个内置的。
bool
是最接近的东西(但过滤掉了其他元素)有趣的是,
None.\uu______
不会返回
True
对于大多数非None对象,它返回
NotImplemented
。幸运的是,它的计算结果为True。
列表(map(None.\uu_____ _,[0,[],None,“])===[NotImplemented,NotImplemented,False,NotImplemented]
在我的机器上,Python 3.6.3.@AlexHall
[True,True,False,True]
在我的网站上,使用了有点过时的Python 3.4.2(在2.7.9上,
无)实际上,
None.\uu____
总是做正确的事情,因为即使另一个类为
x!=None
实现了一些特殊的东西,也只有在使用
!=
操作符时才会调用它,而不是调用
None.\uu_(x)
。这是一个坏主意,因为它非常微妙地依赖于NotImplemented的行为(在某种程度上,你甚至在写它的时候都没有意识到),因为它鼓励使用
None.\uuuueq\uuuu
来测试事物是否为None,以及。