¿Está garantizado eso False == 0y True == 1, en Python (suponiendo que no sean reasignados por el usuario)? Por ejemplo, ¿se garantiza de alguna manera que el siguiente código siempre producirá los mismos resultados, cualquiera que sea la versión de Python (tanto existentes como futuros)?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
¡Cualquier referencia a la documentación oficial sería muy apreciada!
Editar : como se señala en muchas respuestas, boolhereda de int. Por lo tanto, la pregunta puede reformularse como: "¿La documentación dice oficialmente que los programadores pueden confiar en los booleanos que heredan de enteros, con los valores 0y1 ?". ¡Esta pregunta es relevante para escribir código robusto que no fallará debido a los detalles de implementación!
sum(bool_list). De lo contrario, tendrías que escribir sum(1 for x bool_list if x).
bool_list.count(True)es más explícito; también es aproximadamente 3 veces más rápido ... :)