Pythonの組み込み関数allとanyの使い方

Pythonの組み込み関数allとanyについて解説します。

Pythonの組み込み関数allとanyの使い方

Pythonにはall()any()という組み込み関数があります。

all()関数は、引数にとったリストなどのイテラブルの全ての要素がTrueであればTrueを返します

any()関数は、引数にとったリストなどのイテラブルの要素が一つでもTrueであればTrueを返します

それぞれ、引数にはイテラブルオブジェクトを取ることができるので、リスト、タプル、set型などに同様に利用することができます。以下の解説ではリスト型の例を使います。

all()関数で、すべての要素がTrueかを判定する

all()関数は、引数のイテラブルの全ての要素がTrueであればTrueを返します。逆に、一つでも要素がFalseであればFalseを返します。

空のイテラブルオブジェクトに対してはTrueを返すことに注意してください。

# 全ての要素がTrueかを判定

# 全ての要素がTrueならTrueを返す
all([True, True, True])
# True

# 要素が一つでもFalseならFalseを返す
all([True, True, False])
# False

# 空のイテラブルオブジェクトにはTrueを返す
all([])
# True

any()関数で、いずれかの要素がTrueかを判定する

any()関数は、引数のイテラブルのいずれかの要素がTrueであればTrueを返します。逆に、すべての要素がFalseであればFalseを返します。

空のイテラブルオブジェクトに対してはFalseを返すことに注意してください。

# いずれかの要素がTrueかを判定

# いずれかの要素がTrueならTrueを返す
any([False, False, True])
# True

# 要素がすべてFalseならFalseを返す
any([False, False, False])
# False

# 空のイテラブルオブジェクトにはFalseを返す
any([])
# False

not any()で、すべての要素がFalseかを判定する

any()関数とnot演算子を利用することで、イテラブルの要素がすべてFalseかを判定することができます。any()関数は「含まれる要素がすべてFalseならFalseを返す」ので、not any()を使うと「含まれる要素がすべてFalseならTrue」を返すようになるからです。

# すべての要素がFalseかを判定

# すべての要素がFalseならTrueを返す
not any([False, False, False])
# True

# ひとつでもTrueならFalseを返す
not any([False, False, True])
# False

条件式の中でall()関数とany()関数を使う

if文などで条件式を書くときに、複数の条件をandorで繋げることがありますが、all()関数やany()関数で記述することで冗長さを減らすことができます。

条件がすべてandで繋がっている場合にはall()関数、すべてorで繋がっている場合にはany()関数を利用できます。

# 条件式の中でall()関数とany()関数を使う

# すべての条件がTrueかを判定するif文
if A and B and C and D:
    print("すべての条件がTrue")
else:
    print("一つ以上の条件がFalse")

# all()関数で書く方法
if all([A, B, C, D]):
    print("すべての条件がTrue")
else:
    print("一つ以上の条件がFalse")


# いずれかの条件がTrueかを判定するif文
if A or B or C or D:
    print("いずれかの条件がTrue")
else:
    print("すべての条件がFalse")

# any()関数で書く方法
if any([A, B, C, D]):
    print("いずれかの条件がTrue")
else:
    print("すべての条件がFalse")

リスト内包表記で、含まれている要素が条件を満たすかを確認する

all()関数やany()関数をリスト内包表記と組み合わせることで、リストに含まれている要素が特定の条件を満たすかどうかを判定することができます

リスト内包表記でそれぞれの要素に対して条件式(TrueFalseを返す)を適用し、all()関数とany()関数で判定します。

リスト内包表記の基本的な書き方については以下の記事を参考にしてください。

# 要素が特定の条件を満たすかを判定する

nums = [1, 2, 3, 4, 5]
even_nums = [0, 2, 4, 6, 8]

# すべての要素が偶数かどうかを判定する
all([num % 2 == 0 for num in nums])
# False

all([num % 2 == 0 for num in even_nums])
# True


# いずれかの要素が偶数かを判定する
any([num % 2 == 0 for num in nums])
# True

any([num % 2 == 0 for num in even_nums])
# True