Fix Python – Pythonic way of checking if a condition holds for any element of a list

Question

Asked By – Nathan Fellman

I have a list in Python, and I want to check if any elements are negative. Is there a simple function or syntax I can use to apply the “is negative” check to all the elements, and see if any of them is negative? I looked through the documentation and couldn’t find anything similar. The best I could come up with was:

if (True in [t < 0 for t in x]):
    # do something

I find this rather inelegant. Is there a better way to do this in Python?


Existing answers here use the built-in function any to do the iteration. See How do Python’s any and all functions work? for an explanation of any and its counterpart, all.

If the condition you want to check is “is found in another container”, see How to check if one of the following items is in a list? and its counterpart, How to check if all of the following items are in a list?. Using any and all will work, but more efficient solutions are possible.

Now we will see solution for issue: Pythonic way of checking if a condition holds for any element of a list


Answer

any():

if any(t < 0 for t in x):
    # do something

Also, if you’re going to use “True in …”, make it a generator expression so it doesn’t take O(n) memory:

if True in (t < 0 for t in x):

This question is answered By – Ken

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0