1

空のリストの値のテストは False と予想されますが、次の例のように値のテストが行​​われた場合でも、オブジェクトを含むリストの参照が False と報告される理由が少しわかりません。

>>> weapon = []
>>> weapon == True
False
>>> weapon.append("sword")
>>> weapon == True
False
>>> weapon
['sword']

が False の場合weapon = []、なぜ False になるのでしょうweapon = ['sword']か? ドキュメントhttp://docs.python.org/release/2.4.4/lib/truth.htmlによると、True である必要があります。これを理解する上で何が欠けていますか?

4

5 に答える 5

4

次のようなチェックを行う必要があります

In [1]: w = []

In [2]: if w:
   ...:     print True
   ...: else:
   ...:     print False
   ...:
False
于 2012-11-28T04:13:50.127 に答える
3

あなたがするとき:

w = []
if w:
    print "Truthy"
else:
    print "Falsy"

注意すべき重要なことは、句でテストしているものは何でもifブール値に強制されるということです。明示的にするには:

w = []
if bool(w):
    print "Truthy"
else:
    print "Falsy"

["sword"]リンゴとリンゴを比較するには、 と比較する必要はありませんTrue。代わりに、次と比較bool(["sword"])Trueます。

bool(["sword"]) == True
# True
于 2012-11-28T04:20:50.977 に答える
2

bool()直接比較したい場合に使用する必要があります

>>> weapon = []
>>> bool(weapon) == True
False
>>> weapon.append("sword")
>>> bool(weapon) == True
True

iforを使用して条件をテストするwhileと、 への変換boolが暗黙的に行われます

>>> if weapon == True:  # weapon isn't equal to True
...     print "True"
... 
>>> if weapon:
...     print "True"
... 
True
于 2012-11-28T04:21:05.203 に答える
2

その記事から、物事でさえ「真の」真理値を持っていると考えられていることに注意してください。必ずしもそうであるとは限りません== True。例えば:

["hi"] == True 
// False

if ["hi"]:
    print("hello")
// prints hello
于 2012-11-28T04:17:26.927 に答える
1

ドキュメントには、「任意のオブジェクトを真の値でテストできます」と記載されていますが、そうではありませ[] == False['whatever'] == True「if または while 条件で使用するため、またはブール演算のオペランドとして使用するために」ドキュメントで指定されているように、オブジェクトをテストする必要があります。

于 2012-11-28T04:21:52.367 に答える