使用布尔值对列表进行索引工作正常。虽然索引应该是一个整数。
以下是我在控制台中尝试过的:
>>> l = [1,2,3,4,5,6]
>>>
>>> l[False]
1
>>> l[True]
2
>>> l[False + True]
2
>>> l[False + 2*True]
3
>>>
>>> l['0']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>> type(True)
<type 'bool'>
当我尝试l['0']
它时,会打印出索引中预期的 int 类型的错误,这很明显。然后,即使是 和 的类型,'True'
列表'False'
上Bool
的索引也可以正常工作,并自动将其转换为 int 类型并执行操作。
请解释内部发生的情况。我是第一次发问题,如有错误请见谅。