Проверьте, нет ли элемента в списке 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