为什么可以在python中使用布尔值作为索引? e.g
>>> a = [1, 2, 3, 4, 5]
>>> a[True]
2
>>> a[False]
1
由于python是一种强类型语言,编译器不应该像添加字符串和整数一样抛出TypeError吗? e.g。
>>> "1" + 1
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: cant convert 'int' object to 'str' implicitly
>>> 1 + "1"
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
答案 0 :(得分:0)
bool
实际上是int
的子类。正如每个数字都是布尔值一样,每个布尔值都是一个整数。如果您使用int(True)
,则会获得1
,如果您int(False)
,则会获得0
。使用a[True]
时,它与a[1]
相同。您知道此测试中的bool
子类int
:
>>> issubclass(bool, int)
True