Pythonの真理値(論理値/真偽値)について書いています。
真理値について解説した後に、他の値からbool関数を使って、bool型にどう変換されるか動作を確認してみました。
載せているサンプルコードはPythonのバージョン3.11.0で動作検証しました。
Pythonの真理値(bool)とは?
Pythonの真理値はTrueまたはFalseのどちらかの値です。
if文など、判定を行う際に意識する必要があります。
例えば、下記のようにif文で判定を行います。
Trueだったときには、定義した配下のブロックが処理されます。
test = True
if test:
print('Trueです')
else:
print('Falseです')
test変数にTrueを代入して、if文で判定しています。
上記ではTrueなので、print関数で「Trueです
」が出力されて処理が終わります。
このように判定して処理を分けるときに、真理値を気にしておく必要があります。
比較演算子の真理値
比較演算子で値を比較したときにも、真理値が返ってきています。
例えば、下記のように同値の場合だとTrueが返ってきます。
print(10 == 10) # True
「<
」や「>
」で、比較した場合でも正しい場合には、Trueが返ってきて違う場合にはFalseが返ってきます。
print(100 < 77) # False
print(77 > 10) # True
真理値の型は?
真理値のTrueとFalseはbool型になります。
type関数で型を確認すると、下記のようにboolになっています。
print(type(True)) # <class 'bool'>
print(type(False)) # <class 'bool'>
比較演算子で比較した場合にも、真理値が返ってきているので、bool型になります。
print(type(10 > 3)) # <class 'bool'>
bool型への変換
bool関数を使うと、他の型からbool型に値を変換することができます。
例えば、下記のように使うことができます。
result = bool("hello, world!")
print(result) # True
bool関数に文字列を渡して、bool型に変換しました。
結果Trueが返ってきます。
基本的に値があれば、Trueになりますが、一部の値ではFalseになるので注意が必要です。
以降で実際に変換してみました。
Noneを変換する
Noneを変換すると、Falseになります。
print(bool(None)) # False
ゼロを変換する
ゼロ(0
)を変換すると、Falseになります。
print(bool(0)) # False
数値を変換する
数値を変換すると、Trueになります。
print(bool(100)) # True
文字列を変換する
文字列を変換すると、Trueになります。
print(bool("コードライク")) # True
空文字を変換する
空文字を変換すると、Falseになります。
print(bool("")) # False
リストを変換する
リストを変換すると、Trueになります。
print(bool(['apple', 'banana', 'orange'])) # True
空のリストを変換する
空のリストを変換すると、Falseになります。
print(bool([])) # False
辞書を変換する
辞書を変換すると、Trueになります。
print(bool({'fruit1':'apple', 'fruit2':'banana', 'fruit3':'orange'})) # True
空の辞書を変換する
空の辞書を変換すると、Falseになります。
print(bool({})) # False
集合を変換する
集合を変換すると、Trueになります。
print(bool({'apple', 'banana', 'orange'})) # True
空の集合を変換する
空の集合を変換すると、Falseになります。
print(bool(set())) # False
タプルを変換する
タプルを変換すると、Trueになります。
print(bool(('apple', 'banana', 'orange'))) # True
空のタプルを変換する
空のタプルを変換すると、Falseになります。
print(bool(())) # False
bool型への変換まとめ
今回動作を検証してみた内容を表にまとめました。
項目 | 値の例 | 真理値 |
---|---|---|
None | bool(None) | False |
数値ゼロ | bool(0) | False |
数値 | bool(100) | True |
文字列 | bool(“コードライク”) | True |
空文字列 | bool(“”) | False |
リスト | bool([‘apple’, ‘banana’, ‘orange’]) | True |
空のリスト | bool([]) | False |
辞書 | bool({‘fruit1′:’apple’, ‘fruit2′:’banana’, ‘fruit3′:’orange’}) | True |
空の辞書 | bool({}) | False |
集合 | bool({‘apple’, ‘banana’, ‘orange’}) | True |
空の集合 | bool(set()) | False |
タプル | bool((‘apple’, ‘banana’, ‘orange’)) | True |
空のタプル | bool(()) | False |
空になっているものはFalseでした。
空文字もFalseになりました。
コメント