Pythonのall()関数を徹底解説!すべての要素が真かをチェック


 

Pythonでプログラムを書いていると、リストやタプルなどのコレクションに含まれる「すべての要素が特定の条件を満たしているか」を一度に確認したい場面がよくあります。例えば、すべてのユーザーがアクティブであるか、すべてのタスクが完了済みであるか、すべての数値が正であるか、といった状況です。このような場合に非常に役立つのが、Pythonの組み込み関数である**all()関数**です。この記事では、all()関数の基本的な使い方から、その内部挙動、そして具体的な活用事例までを初心者にもわかりやすく解説しますします。

 

all()関数とは?Pythonにおける真偽値の評価

 

Pythonのall()関数は、引数として与えられたイテラブル(リスト、タプル、セットなど)のすべての要素が「真(True)」である場合にTrueを返し、そうでなければFalseを返す組み込み関数です。

 

Pythonにおける「真」と「偽」のルールのおさらい

 

all()関数を理解するには、Pythonがどのように値を「真」または「偽」と評価するかを知っておく必要があります。

偽(False)と判断される主な値:

  • 数値の**0**(整数、浮動小数点数問わず)

  • 空のシーケンス(""(空文字列)、[](空リスト)、()(空タプル)、set()(空集合)など)

  • 空のマッピング({}(空辞書))

  • 特殊な定数**None**

  • ブール値の**False**

偽となる値以外はすべて真(True)と判断されます。

 

all()関数の基本的な使い方

 

all()関数は、イテラブルを引数に取ります。

Python
 
# すべての要素が真の場合
list1 = [True, True, True]
print(f"list1のすべての要素がTrueか: {all(list1)}") # 出力: list1のすべての要素がTrueか: True

# 偽となる要素が1つでもある場合
list2 = [True, False, True]
print(f"list2のすべての要素がTrueか: {all(list2)}") # 出力: list2のすべての要素がTrueか: False

# 数値の例 (0はFalseと評価される)
numbers1 = [1, 2, 3]
print(f"numbers1のすべての要素が真か: {all(numbers1)}") # 出力: numbers1のすべての要素が真か: True

numbers2 = [1, 0, 3]
print(f"numbers2のすべての要素が真か: {all(numbers2)}") # 出力: numbers2のすべての要素が真か: False

# 文字列の例 (空文字列はFalseと評価される)
words1 = ["apple", "banana", "cherry"]
print(f"words1のすべての要素が真か: {all(words1)}") # 出力: words1のすべての要素が真か: True

words2 = ["apple", "", "cherry"]
print(f"words2のすべての要素が真か: {all(words2)}") # 出力: words2のすべての要素が真か: False

# 空のイテラブルの場合
# 空のイテラブルが与えられた場合、all()はTrueを返します。
# 「すべての要素が真である」という条件は、要素が一つも存在しないため、常に満たされると解釈されます。
print(f"空のリストのすべての要素が真か: {all([])}") # 出力: 空のリストのすべての要素が真か: True
print(f"空のタプルのすべての要素が真か: {all(())}") # 出力: 空のタプルのすべての要素が真か: True

 

all()関数の挙動と活用事例

 

 

短絡評価(Short-circuiting)

 

all()関数は、効率のために「短絡評価」を行います。つまり、イテラブルを左から順に評価していき、途中で1つでも「偽」と評価される要素が見つかった場合、それ以降の要素は評価せずに直ちにFalseを返します。

Python
 
def check_condition(value):
    print(f"Checking: {value}")
    return value > 5

data = [7, 8, 4, 9]
# 4がFalseと評価された時点で、9はチェックされない
result = all(check_condition(x) for x in data)
print(f"結果: {result}")
# 出力:
# Checking: 7
# Checking: 8
# Checking: 4
# 結果: False

この特性は、パフォーマンスが重要な場面で役立ちます。

 

1. 条件のand結合

 

複数の条件がすべて満たされているかを確認する際に、and演算子を多数並べるよりもall()を使った方が簡潔で読みやすくなることがあります。特に、条件が動的に生成される場合に便利です。

Python
 
# 複数のフラグがすべてTrueか
is_logged_in = True
is_admin = True
has_permission = True

if all([is_logged_in, is_admin, has_permission]):
    print("管理者としてすべての権限があります。")

# リスト内包表記と組み合わせて、動的な条件チェック
numbers = [10, 20, 30, 40]
# すべての数値が5より大きいか
if all(n > 5 for n in numbers):
    print("すべての数値は5より大きい。")

students = [
    {"name": "Alice", "score": 85, "passed": True},
    {"name": "Bob", "score": 92, "passed": True},
    {"name": "Charlie", "score": 70, "passed": False}
]

# 全員が合格したか
if all(student["passed"] for student in students):
    print("全員合格!")
else:
    print("不合格者がいます。")
# 出力: 不合格者がいます。

 

2. データ検証 (バリデーション)

 

入力データやユーザーが提供した情報が、一連のルールをすべて満たしているかをチェックするのに役立ちます。

Python
 
user_inputs = ["user123", "passwordABC", "[email protected]"]

# すべての入力文字列が空でないか
if all(len(s) > 0 for s in user_inputs):
    print("すべての入力項目が埋まっています。")
else:
    print("未入力の項目があります。")

 

3. 空のコレクションの特別な扱い

 

前述の通り、all([])Trueを返します。これは、論理的に「空の集合のすべての要素は特定の性質を持つ」とみなされるためです。この挙動が期待と異なる場合は、if collection and all(condition for item in collection): のようにand演算子でコレクションが空でないことを先にチェックすると良いでしょう。

Python
 
required_fields = [] # 必須フィールドが空の場合
if required_fields and all(field in user_data for field in required_fields):
    print("全ての必須フィールドが入力されています。")
else:
    print("必須フィールドが定義されていないか、未入力の項目があります。")

 

all()関数と関連する関数

 

 

any()関数

 

all()関数と対になるのが**any()関数です。any()関数は、イテラブルのいずれかの要素が「真(True)」であればTrueを返し、すべての要素が「偽(False)」である場合にのみFalseを返します**。

Python
 
list_mixed = [False, True, False]
print(f"any(list_mixed): {any(list_mixed)}") # 出力: True

list_all_false = [0, "", None, False]
print(f"any(list_all_false): {any(list_all_false)}") # 出力: False

# 空のイテラブルの場合
print(f"any([]): {any([])}") # 出力: False (all()とは異なる)

all()any()は、しばしば組み合わせて使われたり、どちらか一方が問題解決に適しているか検討されたりします。

 

まとめ

 

Pythonのall()関数は、イテラブル内のすべての要素が真と評価されるかを効率的にチェックするための非常に便利な組み込み関数です。その短絡評価の特性と、空のイテラブルに対する挙動を理解することで、より堅牢で効率的なコードを記述できるようになります。

  • all(iterable)は、イテラブルのすべての要素が真であればTrue、そうでなければFalseを返します。

  • 数値の0、空のシーケンス、Noneなどは「偽」と評価されます。

  • 空のイテラブルに対してはTrueを返します。

  • 「短絡評価」を行い、途中で偽の要素が見つかればすぐにFalseを返します。

  • 複数の条件のAND結合やデータバリデーションに特に有効です。

  • 対になるany()関数も合わせて理解しておくと良いでしょう。

この関数を理解し適切に活用することで、Pythonでの条件判定やデータ検証のロジックがより洗練されるでしょう。


 

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座