Python元组比较的奇怪行为



有人能解释一下这种行为吗?

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

这感觉就像一个bug——每当我检查元组是否在元组列表中时,整数1总是等于True。如果可以解释的话,我不想向Python bug跟踪器报告。

这是True的实现细节,请参阅Python中的False==0和True==1是实现细节还是由语言保证?进行讨论。

这里的"诀窍"是1 == True0 == False都计算为True

您的行111213意味着所有truthy值都应该相等。如果是这样的话,1 == 2将评估为True,这显然是一个错误。

最新更新