Pythonの if 文や while 文の条件式では、ブール型(bool)の True / False だけでなく、数値、文字列、リストなどのあらゆるオブジェクトを評価できます。
Pythonには、**「空(から)のオブジェクトやゼロは偽(False)、それ以外は真(True)とみなす」**という基本的なルールがあります。
この記事では、主要なデータ型が条件式でどのように評価されるかを一覧表とサンプルコードで解説します。
データ型ごとの真偽評価一覧
各データ型において、何が False(偽)とみなされ、何が True(真)とみなされるかをまとめました。
| データ型 | 型名 | 偽 (False) と判定される値 | 真 (True) と判定される値 |
| ブール型 | bool | False | True |
| 整数 | int | 0 | 0 以外のすべての整数(1, -5 など) |
| 浮動小数点数 | float | 0.0 | 0.0 以外のすべての数値(0.1, -3.5 など) |
| 文字列 | str | "" (空文字) | 1文字以上の文字列("a", "0", "False" など) |
| リスト | list | [] (空リスト) | 要素を持つリスト([0], ["a"] など) |
| タプル | tuple | () (空タプル) | 要素を持つタプル((0,) など) |
| 辞書 | dict | {} (空辞書) | 要素を持つ辞書({"k": 1} など) |
| 集合 | set | set() (空集合) | 要素を持つ集合({1} など) |
| None | NoneType | None | (なし。常に偽) |
具体的なコード例
それぞれの型について、実際に 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: と書くことができ、コードを簡潔に記述できます。
