>>> item = 2
>>> seq = [1,2,3]
>>> print (item in seq)
True
>>> print (item in seq is True)
False
Why does the second print
statement output False
?
in
and is
are comparison operators in Python, the same in that respect as, say, <
and ==
. In general,
expr1 <comparison1> expr2 <comparison2> expr3
is treated as
(expr1 <comparison1> expr2) and (expr2 <comparison2> expr3)
except that expr2
is evaluated only once. That's why, e.g.,
0 <= i < n
works as expected. However, it applies to any chained comparison operators. In your example,
item in seq is True
is treated as
(item in seq) and (seq is True)
The seq is True
part is False, so the whole expression is False. To get what you probably intended, use parentheses to change the grouping:
print((item in seq) is True)
Click here for the docs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With