[解決!Python]all/any関数を使って、リストなどの要素が全て真か/偽か、真な要素があるか/偽な要素があるかを調べるには解決!Python

Pythonに組み込みのall関数とany関数を使うと反復可能オブジェクトの要素が全て真であるか、および、そこに真な要素があるかを調べられる。not演算子と組み合わせることで全要素が偽であるか、偽な要素があるかどうかを調べられる。

» 2023年05月30日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

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関数とは次のようなものだ。

  • all関数:反復可能オブジェクトを1つ受け取り、その要素が全て真ならTrueを、そうでなければFalseを返す
  • any関数:反復可能オブジェクトを1つ受け取り、その要素の中に真となるものが1つでもあればTrueを、そうでなければFalseを返す

 これらを使うと以下のことを調べられる。

  • 反復可能オブジェクトの全要素が真かどうか
  • 反復可能オブジェクトに真な要素があるかどうか
  • 反復可能オブジェクトの全要素が偽かどうか
  • 反復可能オブジェクトに偽な要素があるかどうか

 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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。