整数

2012-10-07 8 views
7
[1, 1, 1, 2, 2, 3].count(True) 

>>> 3 

なぜ0からi等しくないすべての値に対してbool(i)戻りTrue場合、このリターン3代わりに6、?整数

答えて

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

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

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

TrueFalseboolのインスタンスであり、boolintのサブクラスです。 the docsから

[ブール値]は偽と真の真理値を表します。値FalseとTrueを表す2つのオブジェクト が唯一のBooleanオブジェクトです。 ブール型は普通の整数のサブタイプである、とブール値0と1のように 振る舞い値、それぞれ、ほとんどすべてのコンテキストで、 例外は文字列に変換するときということで、文字列 「偽」か"True"がそれぞれ返されます。

2

。これは良く理解して行われます。

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

または

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

またはfalseについてのあいまいさがないので、逆の道をカウントが0

以外のものです
>>> li=[1, 1, 1, 2, 2, 3, 0] 
>>> len(li) - li.count(False) 
6 

さらに良い:

+0

私は実際に使用しようとしていたコードではないことを明確にすべきでした - 私はインタプリタを実験していました。 – FreeAsInGimme

+0

@FreeAsInGimme:さて、助けようとしています... –

+0

いいえ、いいえ、私は入力を感謝します。私が学ぶほど、より良い。 – FreeAsInGimme