有人能解释一下这种行为吗?
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 == True
和0 == False
都计算为True
。
您的行11
、12
和13
意味着所有truthy值都应该相等。如果是这样的话,1 == 2
将评估为True
,这显然是一个错误。