🐍
【Python】bool 型のまま算術演算する
bool 型は int 型のサブクラスであるため、そのまま算術演算に使用できます。
>>> cnt = 1
>>> cnt += True
>>> cnt
2
bool 値は次のように変換されます。
- True -> 1
- False -> 0
>>> int(True)
1
>>> int(False)
0
サブクラスの確認
issubclass
関数を使って、関数がサブクラスであるか判別できます。
bool 型は int 型のクラスであることがわかります。
>>> issubclass(bool,int)
True
if 文を使わない例
flag
という bool 値を使って条件分岐させたい場合、if 文を使わずに算術演算できます。
# if文を使う場合
if flag == True:
cnt += 1
# if文を使わない場合
cnt += flag
詳細
もう少し見ていきましょう。
条件式は bool 値が返されます。
>>> 1 == 1
True
>>> 1 == 0
False
>>> type(True)
<class 'bool'>
>>> type(False)
<class 'bool'>
bool 値は、int 型とも判定されます。
>>> isinstance(True,bool)
True
>>> isinstance(True,int)
True
条件式は、算術演算子より優先順位が低いので、()
で囲む必要があります。
>>> 1 == 1 + 1 # 1 == (1 + 1)と同じ
False
>>> 1 == (1 + 1)
False
>>> (1 == 1) + 1
2
以下はすべて同じ結果になります。
>>> (1 == 1) + 1
2
>>> bool(1 == 1) + 1
2
>>> int(bool(1 == 1)) + 1
2
Reference(参考文献)
Discussion