Сравнение и индексация 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 "", line 1, in
TypeError: list indices must be integers, not str
>>> type(True)
Когда я пыталсяl['0']
он напечатал ошибку, ожидаемую в индексах типа int, и это очевидно. Тогда даже тип'True'
а также'False'
являющийсяBool
Индексирование по списку работает нормально, автоматически преобразует его в тип int и выполняет операцию.
Пожалуйста, объясните, что происходит внутри. Я впервые задаю вопрос, поэтому, пожалуйста, прости меня за любую ошибку.