Check if any item in Python list is None (but include zero)

Each Answer to this Q is separated by one/two green lines.

I’m trying to do a simple test that returns True if any of the results of a list are None. However, I want 0 and '' to not cause a return of 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

As you can see, the any() function as it is isn’t being helpful in this context.

For list objects can simply use a membership test:

None in list_1

Like any(), the membership test on a list will scan all elements but short-circuit by returning as soon as a match is found.

any() returns True or False, never None, so your any(list_1) is None test is certainly not going anywhere. You’d have to pass in a generator expression for any() to iterate over, instead:

any(elem is None for elem in list_1)

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


The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .