web-dev-qa-db-ja.com

空のリストはNoneに等しいかどうか?

重複の可能性:
「if not []」が成功したときに、「[] == False」がFalseと評価されるのはなぜですか?

私はPythonの三項演算子に従ってpython

>>> 'true' if True else 'false'  true
   true

[]がNoneに等しくないため、以下のコードが[]として出力されることを期待しています。

>>> a=[]
>>> a==None
False
>>> a if a else None
None

私が間違っている場合は正しいお願い

ありがとうヘマ

9
user1559873

空のリスト、[]、はnotNoneに等しい。

ただし、canFalse--と評価されます。つまり、その「真実性」値はFalseです。 (OPに残されたコメントのソースを参照してください。)

このため、

>>> [] == False
False
>>> if []:
...     print "true!"
... else:
...     print "false!"
false!
13
jdotjdot

NoneNoneTypeの唯一のインスタンスであり、通常、値がないことを示すために使用されます。あなたの例では、ブール値のコンテキストで取得された空のリストがFalseと評価され、条件が失敗するため、elseブランチが実行されます。通訳は次のようなことをします。

>>> a if a else None
    [] if [] else None
    [] if False else None
None

Noneに関する別の有用な議論があります: PythonでのNoneテストではありません

1
ank