[解決!Python]all/any関数を使って、リストなどの要素が全て真か/偽か、真な要素があるか/偽な要素があるかを調べるには:解決!Python
Pythonに組み込みのall関数とany関数を使うと反復可能オブジェクトの要素が全て真であるか、および、そこに真な要素があるかを調べられる。not演算子と組み合わせることで全要素が偽であるか、偽な要素があるかどうかを調べられる。
all_true = [True, True, True]
all_false = [False, False, False]
mixed = [True, False, True]
# 全要素が真かどうかを調べる
result = all(all_true) # 全要素が真なのでTrue
print(result) # True
result = all(all_false) # 全要素が偽なのでFalse
print(result) # False
result = all(mixed) # 偽な要素があるのでFalse
print(result) # False
# 真な要素があるかどうかを調べる
result = any(all_true) # 全要素が真なのでTrue
print(result) # True
result = any(all_false) # 真な要素がないのでFalse
print(result) # False
result = any(mixed) # 真な要素があるのでTrue
print(result) # True
# 全要素が偽かどうかを調べる
result = not any(all_true) # 全てが真なのでany関数の戻り値はTrue。それを反転
print(result) # False
result = not any(all_false) # 全てが偽なのでany関数の戻り値はFalse。それを反転
print(result) # True
result = not any(mixed) # 真な要素があるのでany関数の戻り値はTrue。それを反転
print(result) # False
# 偽な要素があるかどうか調べる
result = not all(all_true) # 全てが真なのでall関数の戻り値はTrue。それを反転
print(result) # False
result = not all(all_false) # 全てが偽なのでall関数の戻り値はFalse。それを反転
print(result) # True
result = not all(mixed) # 偽な要素があるのでall関数の戻り値はFalse。それを反転
print(result) # True
操作 | 関数 |
---|---|
全要素が真かどうか | all(L) |
真な要素があるかどうか | any(L) |
全要素が偽かどうか | not any(L) |
偽な要素があるかどうか | not all(L) |
all関数とany関数による要素の真偽判定(Lはリストなどの反復可能オブジェクトとする) |
all関数とany関数
Pythonのall関数とany関数とは次のようなものだ。
これらを使うと以下のことを調べられる。
- 反復可能オブジェクトの全要素が真かどうか
- 反復可能オブジェクトに真な要素があるかどうか
- 反復可能オブジェクトの全要素が偽かどうか
- 反復可能オブジェクトに偽な要素があるかどうか
Pythonのドキュメントによれば「False、None、すべての型における数値の0、空の文字列、空のコンテナ」は「偽」と見なされ、それ以外の値は真と見なされることは覚えておこう。例えば、文字列「'False'」や整数値「42」、リスト「[False, False, False]」は真と見なされる。
なお、この後は以下の3つのリストを例に上記の調べ方を紹介する。
all_true = [True, True, True]
all_false = [False, False, False]
mixed = [True, False, True]
全要素が真かどうかを調べる
反復可能オブジェクトの全要素が真かどうかを調べるにはall関数を使えばよい。以下に例を示す。
result = all(all_true) # 全要素が真なのでTrue
print(result) # True
result = all(all_false) # 全要素が偽なのでFalse
print(result) # False
result = all(mixed) # 偽な要素があるのでFalse
print(result) # False
最初の例ではリストall_trueの全要素が真かどうかを調べている。all_trueは[True, True, True]なのでall関数の戻り値はTrueとなる。
次の例ではリストall_falseの全要素が偽かどうかを調べている。all_falseは[False, False, False]なのでall関数はFalseを返す。
最後の例ではリストmixedを対象としている。mixedは[True, False, True]なのでall関数の戻り値はFalseとなる。
真な要素があるかどうかを調べる
反復可能オブジェクトに真となる要素が含まれているかどうかはany関数で調べられる。以下に例を示す。
result = any(all_true) # 全要素が真なのでTrue
print(result) # True
result = any(all_false) # 真な要素がないのでFalse
print(result) # False
result = any(mixed) # 真な要素があるのでTrue
print(result) # True
リストall_trueは全ての要素が真なのでもちろん、any関数はTrueを返す。リストall_falseは全ての要素が偽なので戻り値はFalseになる。リストmixedはTrueとFalseが混在しているので、真な要素があるかどうかを調べるany関数はTrueを返す。
全要素が偽かどうかを調べる
Copyright© Digital Advantage Corp. All Rights Reserved.