Zenn
🙆

Pythonのif x:でFalseになるケース(暗黙の真偽値変換)

2025/03/28に公開

はじめに

最近Pythonを利用することが多いのですが、もともと別言語で育ってきたこともあり、暗黙の真偽値変換について勘違いをしてしまったことがあって、戒めの記事になります。

Falseになるケース

  • 空のリスト []
  • 空の文字列 ""
  • 数値の0(0、0.0など)
  • None
  • False
  • 空のタプル ()
  • 空の辞書 {}
  • 空のセット set()

個人的な認識

この一覧の中では、NoneFalse0以外はTrueのつもりでいました。

感想

うっかりif x is not Noneではなくif xと書いてしまい空配列でTrueでおかしな動作していたのが気がついたきっかけです。

どこかでPythonは変数のNone判定はisを使えと読んでいたのですが、ついやってしまいました。

その他

次のような判定もPythonは可能です。
参照なりポインタの含有ではなく、リストの一致で比較してくれます。
setでできるかは試していません。

python
t = [["a","b"], ["c","d"]]

if ["a","b"] in t:
   print("ok")
else:
   print("ng")

Discussion

ログインするとコメントできます