Say I have a bunch of variables that are either True
or False
. I want to evaluate a set of these variables in one if statement to see if they are
You could do:
if var1 == var2 == var3 == var4 == False:
do_stuff()
But, if the variables evaluate to true or false, you could also do this:
if var1 and var2 and var3 and var4:
do_stuff()
Or
if all([var1, var2, var3, var4]):
do_stuff()
You can use if var1 == var2 == var3 == False:
>>> not any([False, False])
True
>>> not any([True, False])
False
>>>
Use the any() keyword.
How about this:
# if all are False
if not any([var1, var2, var3, var4]):
# do stuff
or:
# if all are True
if all([var1, var2, var3, var4]):
# do stuff
These are easy to read, since they are in plain English.
You should never test a boolean variable with == True (or == False). Instead, either write:
if not (var1 or var2 or var3 or var4):
or use any (and in related problems its cousin all):
if not any((var1, var2, var3, var4)):
or use Python's transitive comparisons:
if var1 == var2 == var3 == var4 == False:
if all(not v for v in (var1, var2, var3, var4)):
That's for the "all false" branch. For "all true", just do if all((var2, var2, var3, var4)):
.