コース一覧
    Python内包表記・高階関数
    anyとall

    Python内包表記・高階関数

    内包表記と高階関数を学び、データ変換を簡潔かつ意図どおりに表現できるようにします。

    1
    内包表記
    01. リスト内包表記と条件15分
    02. if-else付き内包表記15分
    03. 辞書内包表記15分
    04. set内包表記15分
    05. ジェネレータ式15分
    06. つくる 集計のリファクタ20分
    07. 第3章クイズ10分
    2
    高階関数
    01. 関数はオブジェクト15分
    02. map15分
    03. filter15分
    04. sortedとkeyの応用15分
    05. reduce15分
    06. anyとall15分
    07. つくる 抽出・変換パイプライン20分
    08. 第4章クイズ10分

    anyとall

    このレッスンでできるようになること。any と all を使って、「1件でもあるか」「全件そうか」をフラグ変数なしで判定できるようになります。

    any(判定の並び) は1つでも真があれば True、all(判定の並び) は全部が真なら True を返します。中身は真偽値の並びなので、第3章のジェネレータ式と組み合わせるのが定番です。

    Python

    amounts = [220, 640, 1280]
    print(any(a >= 1000 for a in amounts))   # True
    print(all(a >= 1000 for a in amounts))   # False

    これを for 文で書くと、フラグ変数を用意して途中で break する形になります。any と all を使えば意図がそのまま1行で表せますし、真偽が確定した時点で走査を打ち切ってくれるので無駄もありません。

    空のリストを渡したときの答えは覚えておく価値があります。any([]) は False、all([]) は True です。all が True になるのは「反例が1つも無い」からで、支出が0件のときに「全件が予算内」と判定されるのはそのためです。空のときにどう振る舞ってほしいかは、必ず自分で決めて書き分けてください。

    家計簿では次のように使います。

    Python

    expenses = [
        {"name": "牛乳", "amount": 220},
        {"name": "書籍", "amount": 2035},
    ]
    over = any(e["amount"] > 1000 for e in expenses)     # 予算超過が1件でもあるか
    safe = all(e["amount"] <= 1000 for e in expenses)    # 全件が予算内か

    金額は int で比べます。float にすると 1000.0000000000001 のような値で判定がひっくり返ることがあるためです。

    要件

    1. over_exists は any で判定する
    2. all_within は all で判定する
    3. 予算ちょうどの支出は超過にしない
    4. 2つのキーを持つ辞書を返す

    ヒント

    any(e["amount"] > budget for e in expenses) の形で書けます

    「予算以内」は <= です。超過の判定と符号がずれないように気を付けてください

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • つくる 抽出・変換パイプライン

      抽出から変換、集計までを高階関数でつないだ処理を組みます。

    • 第4章クイズ

      高階関数の使い分けの理解を確認します。

    • reduce

      functools.reduce で畳み込み集計を書き、sum と比べます。

    • sortedとkeyの応用

      key にタプルを返して、カテゴリ順かつ金額降順に並べます。

    main.py
    エディタを読み込んでいます

    メモ

    anyとall

    ⌘S で保存