2016-03-29 73 views
0

爲什麼在Python中可以使用布爾值作爲索引?例如在Python中使用布爾值作爲數組索引

>>> a = [1, 2, 3, 4, 5] 
>>> a[True] 
2 
>>> a[False] 
1 

由於python是一種強類型語言,編譯器不應該像在添加字符串和整數時一樣拋出TypeError嗎?例如

>>> "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' 
+3

布爾子整數,你可以從'isinstance(真,INT)看'。 – jonrsharpe

+1

http://stackoverflow.com/questions/2764017/is-false-0-and-true-1-in-python-an-implementation-detail-or-is-it-guarante –

回答

0

bool實際上是int一個子類。就像每個數字都是布爾值一樣,每個布爾值都是一個整數。如果你使用int(True),你會得到1,如果你做int(False),你會得到0。當您使用a[True]時,它與a[1]一樣。你知道boolint從這個測試:

>>> issubclass(bool, int) 
True 
相關問題