2017-01-15 5 views
3

all()演算子を理解すると、すべての要素がtrueの値を返した場合、trueを返すことです。それが完全に機能していると誤解しているか、次のようなものがあります。Python all([6,7,8,9])= Trueです。しかし6 = False

>>> all([0, 7, 8, 9]) 
False 
>>> all([6, 7, 8, 9]) 
True 
>>> any([0, 7, 8, 9]) 
True 
>>> 0 == True 
False 
>>> 1 == True 
True 
>>> 6 == True 
False 
>>> 7 == True 
False 

これは何ですか?

編集 さて、0が偽であることを説明する多くの回答があります。私はそれを得る。 0 =偽、1 =真。 私の問題は、6がFalseとして返されますが、リストの一部としてテストされたときに真として返されるということですか?

>>> all([6, 7, 8, 9]) 
True 
>>> 6 == True 
False 

これは私が取得できないビットですか?

+2

は '' BOOL(6)を参照します。 –

+0

TrueとFalseは0と1の序数の値を持ちます。したがって、その動作。 boolと解釈したい場合は、を使用します。 'bool(6)' –

+0

これはあまりにも急に閉鎖されたように私に見えます。あなたが本当に求めていることは、 '6'と' 7'が 'False'と思われるので、なぜ2番目の式が' True'なのか?そうであれば、答えは、0でない整数はブール値コンテキストでは 'True'と評価されます。 '6 == True'をテストすると、整数はブール型に強制されないので、効果的に' 6 == 1'をテストしています。これは 'False'です。 –

答えて

2

私に確認してください:あなたが本当に求めているのは、67Falseのように見えますが、なぜ2番目の式Trueが表示されるのですか?もしそうなら、答えは0でない整数はブール値コンテキストでTrueと評価されます。 6 == Trueをテストすると、整数はブール型に変換されないので、実際には6 == 1をテストしています。これはFalseです。

編集:何かがブールコンテキストでTrueであるかどうかをテストするための正しい方法は、例えば:

bool(6) 
関連する問題