2012-10-07 13 views

Odpowiedz

3
In [33]: True == 1 
Out[33]: True 

In [34]: True == 2 
Out[34]: False 

In [35]: True == 3 
Out[35]: False 

True i False są przypadki bool i bool to podklasa int.

Od the docs:

[Boolean] reprezentują prawdę wartości Fałsz i Prawda. Dwa obiekty reprezentujące wartości False i True są jedynymi obiektami typu Boolean. Typ logiczny jest podtypem zwykłych liczb całkowitych, a Boolean wartości zachowywać się jak wartości 0 i 1, odpowiednio, w prawie wszystkich kontekstach, Wyjątkiem jest, że po przeliczeniu na łańcuch, łańcuchy „false” lub "True" są zwracane, odpowiednio.

2

to lepiej zrobić z zrozumieniem:

>>> sum(1 for i in [1,1,1,2,2,3,0] if i) 
6 

lub

sum(bool(i) for i in [1,1,1,2,2,3,0]) 

Albo liczyć w przeciwną stronę, ponieważ nie ma niejednoznaczności o Fałsz jest czymś innym niż 0

>>> li=[1, 1, 1, 2, 2, 3, 0] 
>>> len(li) - li.count(False) 
6 

Jeszcze lepiej:

sum(map(bool,li)) 
+0

Powinienem był wyjaśnić, że to nie jest kod, którego faktycznie zamierzałem użyć - po prostu eksperymentowałem z tłumaczem, znajdowałem przypadki skrajne i takie. – FreeAsInGimme

+0

@FreeAsInGimme: OK - cóż, próbuję pomóc ... –

+0

Nie, nie, doceniam dane wejściowe. Im więcej mogę się nauczyć, tym lepiej. – FreeAsInGimme

Powiązane problemy