2012-10-07 14 views

risposta

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

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

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

True e False sono casi di bool, e bool è una sottoclasse di int.

Da the docs:

[booleani] rappresentano la verità falsi valori e vero. I due oggetti che rappresentano i valori False e True sono gli unici oggetti booleani. Il tipo booleano è un sottotipo di interi semplici, e booleano Valori si comportano come i valori 0 e 1, rispettivamente, in quasi tutti i contesti, l'eccezione è che quando convertito in una stringa, le stringhe "false" o "Veri" vengono restituiti, rispettivamente.

2

Questo è meglio fare con la comprensione:

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

o

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

o contare in senso opposto, dal momento che non v'è alcuna ambiguità su False è qualcosa di diverso da 0

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

Meglio ancora:

sum(map(bool,li)) 
+0

Avrei dovuto chiarire che non era il codice che intendevo effettivamente usare: stavo solo sperimentando l'interprete, trovando casi limite e così via. – FreeAsInGimme

+0

@FreeAsInGimme: OK - beh, cercando di dare una mano ... –

+0

No, no, apprezzo l'input. Più posso imparare, meglio è. – FreeAsInGimme