Pythonにおける真偽値判定:各データ型のTrue/False評価ルール一覧

Pythonの if 文や while 文の条件式では、ブール型(bool)の True / False だけでなく、数値、文字列、リストなどのあらゆるオブジェクトを評価できます。

Pythonには、**「空(から)のオブジェクトやゼロは偽(False)、それ以外は真(True)とみなす」**という基本的なルールがあります。

この記事では、主要なデータ型が条件式でどのように評価されるかを一覧表とサンプルコードで解説します。

目次

データ型ごとの真偽評価一覧

各データ型において、何が False(偽)とみなされ、何が True(真)とみなされるかをまとめました。

データ型型名偽 (False) と判定される値真 (True) と判定される値
ブール型boolFalseTrue
整数int00 以外のすべての整数(1, -5 など)
浮動小数点数float0.00.0 以外のすべての数値(0.1, -3.5 など)
文字列str"" (空文字)1文字以上の文字列("a", "0", "False" など)
リストlist[] (空リスト)要素を持つリスト([0], ["a"] など)
タプルtuple() (空タプル)要素を持つタプル((0,) など)
辞書dict{} (空辞書)要素を持つ辞書({"k": 1} など)
集合setset() (空集合)要素を持つ集合({1} など)
NoneNoneTypeNone(なし。常に偽)

具体的なコード例

それぞれの型について、実際に if 文で判定を行うコード例を示します。

1. 数値(int, float)

値が 0 または 0.0 の場合のみ False となり、それ以外(負の数を含む)はすべて True となります。

# 整数 (int)
zero_value = 0
if zero_value:
    print("0 は True です")
else:
    print("0 は False です")  # こちらが実行される

integer_value = 100
if integer_value:
    print(f"{integer_value} は True です")

# 浮動小数点数 (float)
float_zero = 0.0
if float_zero:
    print("0.0 は True です")
else:
    print("0.0 は False です")  # こちらが実行される

float_value = 0.5
if float_value:
    print(f"{float_value} は True です")

2. 文字列(str)

文字数が0(空文字列)の場合は False、スペースを含め1文字でもあれば True となります。文字列の "0""False" も、文字が含まれているため True となる点に注意してください。

# 空の文字列
empty_text = ""
if empty_text:
    print("空文字は True です")
else:
    print("空文字は False です")  # こちらが実行される

# 文字列
message = "Python"
if message:
    print(f"'{message}' は True です")

3. コレクション(list, tuple, dict, set)

リストや辞書などのコンテナオブジェクトは、中身が空の場合は False、要素が一つでも入っていれば True となります。

# リスト (list)
empty_list = []
if empty_list:
    print("空リストは True です")
else:
    print("空リストは False です")  # こちらが実行される

stock_list = ["apple", "orange"]
if stock_list:
    print(f"リスト {stock_list} は True です")

# タプル (tuple)
empty_tuple = ()
if empty_tuple:
    pass
else:
    print("空タプルは False です")  # こちらが実行される

# 辞書 (dict)
user_data = {"id": 101}
if user_data:
    print(f"辞書 {user_data} は True です")

# 集合 (set)
unique_numbers = {1, 3, 5}
if unique_numbers:
    print(f"集合 {unique_numbers} は True です")

4. None(NoneType)

None は「値が存在しない」ことを表す特殊な型であり、常に False と評価されます。

# NoneType
nothing = None

if nothing:
    print("None は True です")
else:
    print("None は False です")  # こちらが実行される

まとめ

Pythonにおける真偽値判定のルールはシンプルです。

  • Falseになるもの: 0, 0.0, "", [], (), {}, set(), None, False
  • Trueになるもの: 上記以外

この性質を利用すると、if len(my_list) > 0: と書く代わりに、単に if my_list: と書くことができ、コードを簡潔に記述できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次