この記事では、Pythonのbool型について解説します。
bool
は、オンやオフなどの二者択一を表す場合や比較演算の演算結果として用いられています。また、フラグとしても使われたりと頻繁に使用される型です。
それでは、bool型について見ていきましょう!
boolとは?
bool
とは、真偽値を定義するためのint
型のサブクラスです。
真偽値とは、「真」(True)または「偽」(False)であるかを示す値のことです。「オン」や「オフ」の2つの状態を表現したり判定する際に使用されます。
また、「真理値」や「bool値」と呼ばれたりもします。
boolの基本的な使い方
bool値であるTrue(トゥルー)
とFalse(フォルス)
は組み込み定数として定義されています。なので、直接呼び出すだけで使用可能です。
print(True) # True
print(False) # False
print(type(True)) # <class 'bool'>
print(type(False)) # <class 'bool'>
定数なので代入しようとするとSyntaxError
が発生します。
True = 1 # SyntaxError
bool型のコンストラクタから新しいインスタンスを生成しようとしても必ずTrue
、またはFalse
のどちらかが生成されます。どのような値がTrue
、False
になるかは後述します。
print(bool(1)) # True
print(bool(0)) # False
bool値はint
型のサブクラスなので数値処理を行うこともできます。その場合は、True = 1
、False = 0
として扱われます。
print(0 + True) # 1
print(0 + False) # 0
この性質を利用することでリストなどに格納されているbool値の中に何個True
が存在するかをsum
関数を使って調べることができます。
l = [True, False, True]
print(sum(l)) # 2
boolの判定
bool値はif
文やwhile
文の条件式として使用されることがある。
if True:
# 実行される
while True:
# 無限ループ
上記のようにbool値を直接指定することもあるが大体は比較演算子などで条件を決めて指定する。また、bool値を返す関数を使ったりもする。
num = 10
# 比較演算子
if num < 20:
print('numは20未満です')
# bool値を返す関数
if issubclass(bool, int):
print('boolはintのサブクラスです')
また、その他のオブジェクトもbool値として使用可能です。その場合、以下のような値がFalse
として扱われます。
- 偽であると定義されている定数:
None
とFalse
- 数値型におけるゼロ:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
- 空のシーケンスまたはコレクション:
''
,()
,[]
,{}
,set()
,range(0)
これら以外のオブジェクトはTrue
として扱われます。
# 実行される
if 1:
if 'abc':
if [1, 2, 3]:
# 実行されない
if 0:
if '':
if []:
boolに変換
bool()を使うことで他の型のオブジェクトをbool値であるTrue
、またはFalse
に変換することができます。
# 0、または空でない場合 = True
i = bool(16362427)
f = bool(0.1)
st = bool('Hello')
l = bool([1, 2, 3])
t = bool(('a', 'b', 'c'))
d = bool({'a': 1, 'b': 2, 'c': 3})
s = bool({9, 8, 7})
# 0、または空の場合 = False
i = bool(0)
f = bool(0.0)
st = bool('')
l = bool([])
t = bool(())
d = bool({})
s = bool(set())