Pythonのbool(真偽値)の配列の書き方使い方
- 作成日: 2022-04-11
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonのboolの配列の書き方
Pythonにはboolという型があります。
このbool型を使って配列を作る方法を解説します。
boolは整数と親和性がある型です。
この特性を踏まえておくと配列を作るときに役立つかもしれません。
関連記事
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
真偽値(True, False)
Pythonのbool型の使い方ですが、bool型の値は大きく分けて↓の2つになります。
- True
- False
これらの2つのオブジェクトはグローバルなオブジェクトです。
どこからでも参照することができます。
True
は日本語にすると「トゥルー」、意味は「真」になります。
この値は正しい値、整数にすると0以外になります。
False
は日本語にすると「フォルス」、意味は「偽」になります。
この値は正しくない値、整数にすると0になります。
たとえば「関数が成功したか?」ということをboolで表したいとします。
その場合はTrue
が成功で、False
が失敗になります。
これは慣例の話で、失敗をTrue
として扱うこともできます。
これら2つの値(True
, False
)は真偽値と呼ばれます。
真偽値は変数に保存することもできます。
t = True
f = False
これらの真偽値はもちろん配列(リスト)に保存することもできます。
真偽値のタイプを見る
真偽値はbool型です。
そのためTrue
やFalse
をtype()
に渡すとboolが返ってきます。
print(type(True)) # <class 'bool'>
print(type(False)) # <class 'bool'>
真偽値かどうか判定したい場合はtype()
を使うかisinstance()
を使います。
print(type(True) == bool) # True
print(isinstance(True, bool)) # True
print(isinstance(1, bool)) # False
配列をfor文などで回して、配列の要素が真偽値かどうかチェックしたい場合は、上記の方法が使えます。
真偽値は整数と混合して使えますが、厳密な型判定をすると整数と真偽値は違う型になります。
その点は注意が必要です。
真偽値を配列に保存する
真偽値を配列に保存する場合は↓のようにコーディングします。
ary = [True, False, True, False]
↑の場合、配列ary
には真偽値が4つ保存されます。
print(len(ary)) # 4
また、真偽値は計算式の文脈では整数として扱われます。
そのため整数と混同して配列に保存することもできます。
ary = [True, 1, False, 0]
もちろん計算式の文脈では真偽値は整数として扱われますが、型自体は違っています。
配列で真偽値をboolとして厳密に型判定をしたい場合は、整数を混ぜて使うのは注意が必要です。
真偽値で配列を初期化する
真偽値で配列を初期化したい場合です。
たとえばFalse
で配列を埋めたい場合はあります。
その場合は↓のようにコードを書きます。
ary = [False] * 4
print(ary) # [False, False, False, False]
↑のように[False] * 4
と書くと、要素を4つもった配列を初期化して作成できます。
あるいはリスト内包表記も使えます。
ary = [False for _ in range(4)]
print(ary) # [False, False, False, False]
リスト内包表記で、カウント変数が0か2の倍数だったらFalse
, それ以外はTrue
という感じで配列を初期化することもできます。
その場合は↓のようにやります。
ary = [bool(i % 2) for i in range(4)]
print(ary) # [False, True, False, True]
↑のようにすると交互にFalse
とTrue
が入った配列を作れます。
False
とTrue
の順番を逆にしたい場合は↓のように書きます。
ary = [bool(i % 2 == 0) for i in range(4)]
print(ary) # [True, False, True, False]
入れ子の配列(行列)にしたい場合はリスト内包表記で↓のように書けます。
mat = [[False for _ in range(2)] for _ in range(3)]
print(mat) # [[False, False], [False, False], [False, False]]
真偽値の入った配列をfor文で回す
真偽値の入っている配列for文で回したい場合です。
これは普通にfor文を書きます。
ary = [False, True, False, True]
for b in ary:
print(b)
False
True
False
True
配列内の真偽値を反転する
真偽値の入っている配列で、その真偽値を反転して新しい配列を作りたい場合は↓のように書きます。
ary = [False, True, False, True]
rev = [not b for b in ary]
print(rev) # [True, False, True, False]
↑の場合は、リスト内包表記で配列内の真偽値を反転させてます。
not b
というのが反転させているところです。
真偽値はnot
演算子を使うと、その真偽値を反転できます。
つまりTrue
がFalse
に、False
がTrue
になります。
おわりに
今回はPythonのboolを配列で使う方法について解説しました。
Pythonのboolと配列はよく使うデータ型ですのでセットで覚えておくといいかもしれません。
🦝 < boolを配列で扱う
🐭 < 真偽値