Python 关于列表方法的澄清

Python 关于列表方法的澄清,python,list,function,methods,Python,List,Function,Methods,从Python文档: 列表索引(x): 返回值为x的第一项列表中的索引。如果没有此类项目,则为错误。 但是,以下示例在Python shell中返回了这些内容: >>> [1, 2,True, 3, 'a', 4].index(True) 0 >>> [1, 2, 3, 'a', 4].index(True) 0 如您所见,它似乎返回0,即使列表中不存在True。这似乎只有在list.index()中的参数为True时才会发生: 有人知道为什么吗?这是因为T

从Python文档:

列表索引(x): 返回值为x的第一项列表中的索引。如果没有此类项目,则为错误。

但是,以下示例在Python shell中返回了这些内容:

>>> [1, 2,True, 3, 'a', 4].index(True)
0
>>> [1, 2, 3, 'a', 4].index(True)
0
如您所见,它似乎返回0,即使列表中不存在True。这似乎只有在list.index()中的参数为True时才会发生:


有人知道为什么吗?

这是因为
True==1

>>> True == 1
True
因此,结果与文档一致,即返回
==True
的第一个元素的索引。在这种情况下,这是索引
0

处的
1
,这是因为:

>>> True == 1
True
list.index
执行相等性检查,因此它会为您返回索引
0

>>> lis = [1, 2,True, 3, 'a', 4]
>>> next(i for i, x in enumerate(lis) if x == True)
0
>>> lis = [1, 2, 3, 'a', 4]
>>> next(i for i, x in enumerate(lis) if x == True)
0

相关:


谢谢,这让我明白了。但是,yhy True==1是否返回True?我的意思是,这毫无意义,因为1和True肯定不一样,你知道为什么它们看起来是一样的吗?
True
1
完全一样<代码>真的就是穿着一套花哨的西装。