Есть ли встроенная лямбда для нет в Python? - PullRequest
0 голосов
/ 24 апреля 2018

Я вижу следующую идиому, повторенную несколько раз в python X = filter(lambda x: x is not None, X))

Я надеялся, что есть встроенная функция для is not None (в ее стандартной библиотеке или что-то похожее на apache-commons для java) впитон.

В моем коде я организовал его как

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

X = filter(isNotNone, X)

1 Ответ

0 голосов
/ 24 апреля 2018

Вы можете использовать None.__ne__, то есть проверку неравенства None:

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

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

Технически, это не тест x is not None, а x != None, который может дает другой результат для некоторых случаев, например, для классов, которые сравниваются равными None, но для большинства практических случаев это, вероятно, должно работать.

...