重複の可能性:
「if not []」が成功したときに、「[] == False」がFalseと評価されるのはなぜですか?
私はPythonの三項演算子に従ってpython
>>> 'true' if True else 'false' true
true
[]がNoneに等しくないため、以下のコードが[]として出力されることを期待しています。
>>> a=[]
>>> a==None
False
>>> a if a else None
None
私が間違っている場合は正しいお願い
ありがとうヘマ
空のリスト、[]
、はnotNone
に等しい。
ただし、canFalse
--と評価されます。つまり、その「真実性」値はFalse
です。 (OPに残されたコメントのソースを参照してください。)
このため、
>>> [] == False
False
>>> if []:
... print "true!"
... else:
... print "false!"
false!
None
はNoneType
の唯一のインスタンスであり、通常、値がないことを示すために使用されます。あなたの例では、ブール値のコンテキストで取得された空のリストがFalse
と評価され、条件が失敗するため、elseブランチが実行されます。通訳は次のようなことをします。
>>> a if a else None
[] if [] else None
[] if False else None
None
None
に関する別の有用な議論があります: PythonでのNoneテストではありません