在python中使用布尔值作为数组索引

时间:2016-03-29 23:00:43

标签: python arrays types

为什么可以在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'

1 个答案:

答案 0 :(得分:0)

bool实际上是int的子类。正如每个数字都是布尔值一样,每个布尔值都是一个整数。如果您使用int(True),则会获得1,如果您int(False),则会获得0。使用a[True]时,它与a[1]相同。您知道此测试中的bool子类int

>>> issubclass(bool, int)
True