Pythonのbool型について詳しく書いていきます。
目次
Pythonのbool型はint型のサブクラス
Pythonのbool型はint型のサブクラスであり、Trueは1と等価、Falseは0と等価です。このことは、あまり良い設計とは言えませんが、そうなっているものは仕方ないですね。
print(type(True))
# <class 'bool'>
print(type(False))
# <class 'bool'>
print(issubclass(bool,int))
# True
boolからintへの変換
boolをintへ変換すると次のようになります。
print(int(False))
# 0
print(int(True))
# 1
intからboolへの変換
整数値の場合、0はfalsy、0以外がtruthyなので、以下のようになります。
print(bool(0))
# False
print(bool(2))
# True
print(int(bool(2)))
# 1
// intをboolに変換してintに戻すと元の値になるとは限らない。
x = 2
print(int(bool(x))==x)
# False
bool型に対して数値演算ができる
bool型はint型のサブクラスなのでintとして振る舞うことができます。足し算、引き算、sumなど、intでできることはすべてできます。(サブクラスなので当たり前ですね)
print(True == 1)
# True
print(False == 0)
# True
print(True*5)
# 5
print(sum([True, False, True, True]))
# 3
float型,complex型への型変換
True,Falseは1,0と等価なのでint型はもちろん、float型、complex型へ変換することもできます。
print(int(True))
print(int(False))
# 1
# 0
print(float(True))
print(float(False))
# 1.0
# 0.0
print(complex(True))
print(complex(False))
# (1+0j)
# 0j
str型への変換
str()で文字列”True”,”False”に変換できる。print()では見分けがつきにくいですが、type()を通すとstr型であることがわかります。
print(str(True))
print(str(False))
# True
# False
print(type(str(True)))
print(type(str(False)))
# <class 'str'>
# <class 'str'>
str型からbool型に変換
str型はsequenceであり、空でないsequenceはtruthyであるから、次のようにしてbool型に戻すことはできません。
※ sequenceについて詳しくは、こちら。→ Pythonのsequenceについて
print(bool(str(False)))
# True
これでは戻せない
print(str(False)=="True")
# False
// bool型に戻したいなら、=="True"とするのが正解
listやtupleへの変換
listやtupleはiterableからでないと変換できません。boolはiterableではありません。
print(list(True))
# 'bool' object is not iterable
print(tuple(True))
# 'bool' object is not iterable
またlistやtupleはsequenceなので、bool型に変換できます。(空のsequenceはFalse,空でないときはTrueです) → Pythonのsequenceについて
(Visited 188 times, 1 visits today)