2012-10-07 12 views

Antwort

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

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

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

True und False sind Instanzen von bool und bool ist eine Unterklasse von int.

Von the docs:

[Boolesche] die Wahrheit repräsentieren Werte wahr und falsch. Die beiden Objekte , die die Werte False und True darstellen, sind die einzigen booleschen Objekte. Der Boolean-Typ ist ein Subtyp der Ebene ganzer Zahlen, und Boolesche Werte verhalten sich wie die Werte 0 und 1 jeweils in fast allen Kontexten, der Ausnahme, dass, wenn in einen String umgewandelt, die Saiten „False“ oder "True" werden jeweils zurückgegeben.

2

Dies wird besser mit einem Verständnis getan:

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

oder

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

Oder die entgegengesetzte Richtung zählen, da es keine Zweideutigkeit über False ist etwas anderes als 0

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

Besser noch:

sum(map(bool,li)) 
+0

Ich hätte klarstellen müssen, dass es nicht Code war, den ich tatsächlich verwenden wollte - ich experimentierte nur mit dem Interpreter, fand Edge Cases und so. – FreeAsInGimme

+0

@FreeAsInGimme: OK - naja, versuchen zu helfen ... –

+0

Nein, nein, ich schätze die Eingabe. Je mehr ich lernen kann, desto besser. – FreeAsInGimme

Verwandte Themen