2016-12-31 3 views
-8
def check(): 
    if [1,2,3]: 
     return [2,3,4] 

check() 
[2, 3, 4] 

[1,2,3]はリストですが、真または偽のブール式ではないと思いますか?しかし、なぜ関数はリスト([1,2,3])を真と考えていますか?後のステートメントは何ですか?

+2

任意の[空でないリスト](https://docs.python.org/3/library/stdtypes.html#truth-バリューテスト)は真と見なされます。 – MSeifert

+0

ブール式が必要な場合は、任意の式を使用できます。 – Barmar

+1

[真理値のテスト](https://docs.python.org/3/library/stdtypes.html#truth-value-testing)をチェックして、Pythonで真と偽とみなされるものを確認してください。 –

答えて

0

ifまたはwhileの条件として、任意の式を使用できます。式の真理値がどのように評価されるかについては、https://docs.python.org/2.4/lib/truth.htmlを参照してください。で述べたよう

+0

うわー、まだPython 2.4のドキュメントがあります。 :-) – MSeifert

+0

Googleを非難する、それは見つけたページです。 – Barmar

0

python documentation on "Truth Value Testing"

以下の値は偽であると考えられる:

[...]

  • 任意の空のシーケンス、例えば、''()[]

[...]

他のすべての値が真であると見なされ

- 多くの種類のオブジェクトは常に真であるようにします。

だから、任意の空でないリストはTrueとして評価され、(それはたとえばnumpy.ndarrayのためのように、__bool__または__len__方法だ、それが例外をスローしない場合)pythonオブジェクトはブールコンテキストで評価することができます。

0

私が知る限り、空リスト/タプル、空の文字列(技術的には文字のリストとも見なすことができる)、または数字0以外の任意の型の表現は "True"とみなされます。

PS楽しい事実と同じように、0.000001という数字はTrueを返します。

関連する問題