コース一覧
    Python内包表記・高階関数
    if-else付き内包表記

    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分

    if-else付き内包表記

    このレッスンでできるようになること。条件によって値を出し分ける内包表記を書き、支出に高額フラグを付けたリストを作れるようになります。

    前のレッスンの if は、末尾に置いて「残すかどうか」を決めるものでした。今回の if-else は置く場所が違います。角かっこの左側、つまり値を作る式の中に書きます。

    Python

    labels = ["高額" if e["amount"] >= 3000 else "通常" for e in expenses]

    この A if 条件 else B は条件式と呼ばれ、内包表記とは無関係にどこでも使える Python の式です。条件が真なら A、偽なら B が値になります。文ではなく式なので、変数への代入の右側にも、関数の引数にも置けます。

    2つの if を混同しないために、位置で覚えるのが確実です。末尾の if は件数を減らすためのもので、else を付けられません。左側の if-else は件数を変えず、値だけを差し替えるものです。全件が結果に入るので、もとのリストと長さがそろいます。

    家計簿では、金額そのものより「これは高いのか、いつも通りか」を並べて見たい場面がよくあります。品名とラベルを組にした辞書を作れば、そのまま一覧表示に使えます。

    Python

    [{"name": e["name"], "label": "高額" if e["amount"] >= 3000 else "通常"} for e in expenses]

    しきい値を関数の引数で受け取る形にしておくと、月ごとに基準を変えて見直せます。数字を式の中に直接書き込むと、あとから変えるときに書き換え漏れが起きるので、判断の基準になる数値は引数か変数に出しておくのが安全です。

    なお、両方の if を1つの内包表記に置くこともできます。その場合は左に if-else、末尾に if を書きますが、読みにくくなりやすいので、迷ったら2段に分けて書いてください。

    要件

    1. 内包表記の中で A if 条件 else B の形を使うこと
    2. 返す辞書のキーは name と label の2つにすること
    3. しきい値ちょうどの金額は 高額 として扱うこと

    ヒント

    式の側に書く if-else は件数を減らしません。全件が結果に入ります

    しきい値との比較は e["amount"] >= threshold です

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

    関連レッスン

    • 辞書内包表記

      辞書内包表記でカテゴリから合計への辞書を1行で作ります。

    • set内包表記

      set 内包表記で、重複のない利用カテゴリ一覧を作ります。

    • ジェネレータ式

      ジェネレータ式で合計を求め、リストを作らずに済ませます。

    • つくる 集計のリファクタ

      既存の集計ループ3つを内包表記に置き換えて、結果が変わらないことを確かめます。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 内包表記for と if を 1 行で書く構文
    • リスト順序付きで複数の値を扱うデータ構造
    • 変数データに名前をつけて参照する仕組み
    • 関数処理に名前を付けて再利用できる単位
    • 引数位置引数=順番で渡す。
    • 判断YES/NO 分岐を表す菱形
    main.py
    エディタを読み込んでいます

    メモ

    if-else付き内包表記

    ⌘S で保存