Проверьте, нет ли элемента в списке Python None (но включает ноль)

Я пытаюсь выполнить простой тест, который возвращает True, если любой из результатов списка None. Однако я хочу, чтобы 0 и '' не вызывали возврат True.

list_1 = [0, 1, None, 4]
list_2 = [0, 1, 3, 4]

any(list_1) is None
>>>False
any(list_2) is None
>>>False

Как вы можете видеть, функция any(), поскольку она не является полезной в этом контексте.

Ответ 1

Для объектов list можно просто использовать тест членства:

None in list_1

Как и any(), тест членства на list будет проверять все элементы, кроме короткого замыкания, путем возврата, как только будет найдено совпадение.

any() возвращает True или False, никогда None, поэтому ваш тест any(list_1) is None, безусловно, никуда не денется. Вам нужно будет передать выражение генератора для any() для итерации, вместо этого:

any(elem is None for elem in list_1)

Ответ 2

list_1 = [0, 1, None, 4]

list_2 = [0, 1, 3, 4]

any(x is None for x in list_1)
>>>True

any(x is None for x in list_2)
>>>False