Est-ce garanti False == 0et True == 1en Python (en supposant qu'ils ne sont pas réaffectés par l'utilisateur)? Par exemple, est-il garanti de quelque manière que le code suivant produira toujours les mêmes résultats, quelle que soit la version de Python (à la fois existante et, probablement, future)?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
Toute référence à la documentation officielle serait très appréciée!
Edit : Comme indiqué dans de nombreuses réponses, boolhérite de int. La question peut donc être reformulée comme suit: "La documentation dit-elle officiellement que les programmeurs peuvent s'appuyer sur des booléens héritant d'entiers, avec les valeurs 0et1 ?". Cette question est pertinente pour écrire du code robuste qui n'échouera pas à cause des détails d'implémentation!
sum(bool_list). Sinon, il faudrait écrire sum(1 for x bool_list if x).
bool_list.count(True)c'est plus explicite; c'est aussi environ 3 fois plus rapide… :)