Индексирование по списку с булевыми значениями отлично работает. Хотя индекс должен быть целым числом.
Вот что я пробовал в консоли:
>>> 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 и выполняет операцию.
Пожалуйста, объясните, что происходит внутри страны. Я отправляю вопрос в первый раз, поэтому, пожалуйста, простите меня за любую ошибку.