¿Está garantizado eso False == 0
y 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, bool
hereda 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 0
y1
?". ¡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 ... :)