简体   繁体   中英

Python tuple comparison odd behavior

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM