Гарантируется ли это False == 0и True == 1в Python (при условии, что они не переназначены пользователем)? Например, гарантируется ли каким-либо образом, что следующий код всегда будет давать одинаковые результаты, независимо от версии Python (как существующей, так и, вероятно, будущей)?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
Любая ссылка на официальную документацию будет высоко ценится!
Изменить : как отмечено во многих ответах, boolнаследуется от int. Поэтому вопрос можно переформулировать так: «Официально ли в документации сказано, что программисты могут полагаться на логические значения, наследуемые от целых чисел, со значениями 0и1 ?». Этот вопрос актуален для написания надежного кода, который не потерпит неудачу из-за деталей реализации!
sum(bool_list). В противном случае вам придется написать sum(1 for x bool_list if x).
bool_list.count(True)это более явно; это также примерно в 3 раза быстрее… :)