2016-03-29 22 views
0

Boole değerlerini python'da neden dizin olarak kullanmak mümkün? örneğinBoole değerlerini python dizisi olarak kullanma

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

piton bir kuvvetle dili yazıldığında yana birlikte bir dize ve tamsayı eklerken, derleyici bir TypeError tıpkı atmak gerekmez mi? Örneğin.

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

Booleans alt sınıf tamsayılar, sen 'isinstance (Doğru, int)' den görebileceğiniz gibi: Sen bool alt sınıfları bu testten int biliyoruz. – jonrsharpe

+1

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

cevap

0

bool aslında int bir alt sınıfıdır. Her sayı bir boole olduğu gibi, her bir boole bir tamsayıdır. int(True) kullanırsanız, 1 alırsınız ve int(False) yaparsanız, 0 alırsınız. a[True]'u kullandığınızda, a[1] ile aynı şeydir.

>>> issubclass(bool, int) 
True 
İlgili konular