pythonpython-3.x

Check if multiple variables have the same value


I have a set of three variables x, y, z and I want to check if they all share the same value. In my case, the value will either be 1 or 0, but I only need to know if they are all the same. Currently I'm using

if 1 == x and  1 == y and 1 == z: 
    sameness = True

Looking for the answer I've found:

if 1 in {x, y, z}:

However, this operates as

if 1 == x or  1 == y or 1 == z: 
    atleastOneMatch = True

Is it possible to check if 1 is in each: x, y, and z? Better yet, is there a more concise way of checking simply if x, y, and z are the same value?

(If it matters, I use Python 3.)


Solution

  • If you have an arbitrary sequence, use the all() function with a generator expression:

    values = [x, y, z]  # can contain any number of values
    if all(v == 1 for v in values):
    

    otherwise, just use == on all three variables:

    if x == y == z == 1:
    

    If you only needed to know if they are all the same value (regardless of what value that is), use:

    if all(v == values[0] for v in values):
    

    or

    if x == y == z: