2016-03-29 4 views
0

Warum ist es möglich, Boolesche Werte als Index in Python zu benutzen? zMit Boolesche Werte als Array-Index in Python

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

Da Python eine stark typisierte Sprache ist, sollte der Compiler kein Typeerror werfen wie wenn eine Zeichenfolge und integer Addition? z.B.

>>> "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

Boolesche Unterklasse ganzen Zahlen, wie man es von 'isinstance (True, int) sehen kann'. – jonrsharpe

+1

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

Antwort

0

bool ist eigentlich eine Unterklasse von int. So wie jede Zahl ein boolescher Wert ist, ist jeder Boolesche Wert eine Ganzzahl. Wenn Sie int(True) verwenden, werden Sie 1 bekommen und wenn Sie int(False) tun, werden Sie 0 bekommen. Wenn Sie a[True] verwenden, ist es dasselbe wie a[1]. Sie wissen, dass bool Subklassen int aus diesem Test:

>>> issubclass(bool, int) 
True 
Verwandte Themen