有人可以解释一下这种行为吗?
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
感觉就像一个错误 - 每当我检查一个元组是否在元组列表中时,整数1总是等于True。如果可以解释的话,我不想将它报告给Python bug跟踪器。
答案 0 :(得分:2)
这是True
的实施细节,请参阅Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language?进行讨论。
答案 1 :(得分:1)
我想这里的“技巧”是1 == True
和0 == False
都评价为True
。
您的行11
,12
和13
意味着所有真正的价值观应该相等。如果是这种情况,1 == 2
将评估为True
,这显然是一个错误。