Сравнение и индексация Python Bool и int в списке с логическими значениями
Индексирование по списку с логическими значениями работает нормально. Хотя индекс должен быть целым числом.
Вот что я попробовал в консоли:
>>> 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'>
Когда я пыталсяl['0']
он напечатал ошибку, ожидаемую в индексах типа int, и это очевидно.
Тогда даже тип'True'
а также'False'
являющийсяBool
Индексирование по списку работает нормально, автоматически преобразует его в тип int и выполняет операцию.
Пожалуйста, объясните, что происходит внутри. Я впервые задаю вопрос, поэтому, пожалуйста, прости меня за любую ошибку.