2012-10-07 8 views

Respuesta

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

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

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

True y False son instancias de bool, y bool es una subclase de int.

De the docs:

[Booleanos] representan la verdad valores de falso y verdadero. Los dos objetos que representan los valores False y True son los únicos objetos booleanos. El tipo booleano es un subtipo de enteros normales, y valores booleanos se comportan como los valores 0 y 1, respectivamente, en casi todos los contextos, la excepción de que cuando se convierte en una cadena, las cadenas "falso" o "Verdadero" son devueltos, respectivamente.

2

Esto se hace mejor con una comprensión:

>>> 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 recuento de la manera opuesta, ya que no hay ambigüedad sobre Falso es algo distinto de 0

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

Mejor aún:

sum(map(bool,li)) 
+0

Debería haber aclarado que no era un código que en realidad tenía la intención de usar, solo estaba experimentando con el intérprete, encontrando casos extremos y tal. – FreeAsInGimme

+0

@FreeAsInGimme: OK - bueno, tratando de ayudar ... –

+0

No, no, agradezco la entrada. Cuanto más pueda aprender, mejor. – FreeAsInGimme

Cuestiones relacionadas