Czy jest to zagwarantowane False == 0
i True == 1
w Pythonie (zakładając, że użytkownik nie przypisuje ich ponownie)? Na przykład, czy jest w jakikolwiek sposób gwarantowany, że poniższy kod zawsze będzie dawał takie same wyniki, bez względu na wersję Pythona (zarówno istniejące, jak i prawdopodobnie przyszłe)?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
Wszelkie odniesienia do oficjalnej dokumentacji będą mile widziane!
Edycja : jak zauważono w wielu odpowiedziach, bool
dziedziczy po int
. Pytanie może zatem zostać przekształcone w następujący sposób: „Czy dokumentacja oficjalnie mówi, że programiści mogą polegać na wynikach logicznych dziedziczących po liczbach całkowitych, z wartościami 0
i1
?”. To pytanie dotyczy pisania solidnego kodu, który nie zawiedzie z powodu szczegółów implementacji!
sum(bool_list)
. W przeciwnym razie będziesz musiał pisać sum(1 for x bool_list if x)
.
bool_list.count(True)
jest to bardziej wyraźne; jest także około 3 razy szybszy… :)