Czy jest to zagwarantowane False == 0i True == 1w 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, booldziedziczy 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 0i1 ?”. 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… :)