Comparing Multiple Variables to a Single Value
Problem Description:
Seeking a method in Python to ascertain whether multiple variables are equal to a particular integer and subsequently produce a string composed of three letters. For instance, given:
x = 0 y = 1 z = 3 mylist = [] if x or y or z == 0: mylist.append("c") if x or y or z == 1: mylist.append("d") if x or y or z == 2: mylist.append("e") if x or y or z == 3: mylist.append("f")
...the expected output would be a list of ["c", "d", "f"].
Answer:
The provided code misunderstands Boolean expressions in Python. The or operator examines each side separately, resulting in the following evaluation:
(x == False or y == False) or (y == False or z == False)
To verify that at least one variable equals the desired integer, use the following expression:
if 1 in (x, y, z): ....
Alternatively, for improved efficiency:
if 1 in {x, y, z}: ....
Explanation:
Operators have precedence in Python, and the or operator has lower precedence than equality (=). Therefore, equality is evaluated first. Moreover, the or operator returns the first truthy value encountered. This means that the code sequence:
x or y or z == 0
would return False if x was not 0, even if y or z was. To evaluate multiple variables against a single value correctly, use an expression such as:
x == 1 or y == 1 or z == 1
The above is the detailed content of How to Efficiently Compare Multiple Python Variables to a Single Integer Value?. For more information, please follow other related articles on the PHP Chinese website!