Python元组比较异常行为

Python元组比较异常行为,python,python-2.7,tuples,Python,Python 2.7,Tuples,有人能解释一下这种行为吗 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。如果可以解释

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

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
的一个实现细节,请参阅以进行讨论。

我想这里的“诀窍”是
1==True
0==False
都计算为
True


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

谢谢你给我指出这个答案,它有很多有用的信息!