Python Bool and int porównanie i indeksowanie na liście z wartościami boolowskimi
Indeksowanie na liście z wartościami boolowskimi działa dobrze. Chociaż indeks powinien być liczbą całkowitą.
Oto, co próbowałem w konsoli:
>>> l = [1,2,3,4,5,6]
>>>
>>> l[False]
1
>>> l[True]
2
>>> l[False + True]
2
>>> l[False + 2*True]
3
>>>
>>> l['0']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>> type(True)
<type 'bool'>
Kiedy próbowałeml['0']
wydrukował błąd, którego typ int oczekiwał w indeksach i to jest oczywiste. Wtedy nawet typ'True'
i'False'
istotaBool
, indeksowanie na liście działa dobrze i automatycznie konwertuje go na typ int i wykonuje operację.
Proszę wyjaśnić, co się dzieje wewnętrznie. Po raz pierwszy publikuję pytanie, więc proszę wybacz mi każdy błąd.