Can someone please explain this behavior?
In[11]: (1, 2) in [(True, 2)]
Out[11]: True
In[12]: (1, 2) in [(True, True)]
Out[12]: False
In[13]: (1, 2) in [(True, False)]
Out[13]: False
In[14]: ("1", 2) in [(True, 2)]
Out[14]: False
It feels like a bug--whenever I check if a tuple is in a list of tuples, the integer 1 is always equal to True. I don't want to report it to the Python bug tracker if it can be explained.
It's something of an implementation detail of True
, see Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language? for a discussion.
The "trick" here I suppose is that 1 == True
and 0 == False
both evaluate to True
.
Your lines 11
, 12
and 13
imply that all truthy values should be equal. If that were the case though, 1 == 2
would evaluate to True
which would clearly be a bug.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.