What is the most 'pythonic' way to logically combine a list of booleans?

PythonListBoolean

Python Problem Overview


I have a list of booleans I'd like to logically combine using and/or. The expanded operations would be:

vals = [True, False, True, True, True, False]

# And-ing them together
result = True
for item in vals:
    result = result and item

# Or-ing them together
result = False
for item in vals:
    result = result or item

Are there nifty one-liners for each of the above?

Python Solutions


Solution 1 - Python

See all(iterable) :

> Return True if all elements of the > iterable are true (or if the iterable > is empty).

And any(iterable) :

> Return True if any element of the > iterable is true. If the iterable is empty, return False.

Solution 2 - Python

The best way to do it is with the any() and all() functions.

vals = [True, False, True, True, True]
if any(vals):
   print "any() reckons there's something true in the list."
if all(vals):
   print "all() reckons there's no non-True values in the list."
if any(x % 4 for x in range(100)):
   print "One of the numbers between 0 and 99 is divisible by 4."

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBobCView Question on Stackoverflow
Solution 1 - PythonNullUserExceptionView Answer on Stackoverflow
Solution 2 - PythonJerubView Answer on Stackoverflow