コース一覧
    Python内包表記・高階関数
    リスト内包表記と条件

    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分

    リスト内包表記と条件

    このレッスンでできるようになること。条件付きのリスト内包表記を使って、支出データから欲しいものだけを1行で取り出せるようになります。

    第2章では、支出を辞書で表し、それをリストに並べて持つ形に整えました。1件の支出は次のような形です。

    Python

    {"name": "スーパー", "amount": 3200, "category": "食費", "date": "2026-06-03"}

    ここから食費だけを取り出すとき、これまでは空のリストを用意して for でまわし、条件に合ったら append する、という3行のコードを書いていました。

    Python

    foods = []
    for e in expenses:
        if e["category"] == "食費":
            foods.append(e)

    リスト内包表記を使うと、この処理をそのまま1行にたためます。書き方は「取り出す式」「for 変数 in もとのデータ」「if 条件」の順で、角かっこの中に並べるだけです。

    Python

    foods = [e for e in expenses if e["category"] == "食費"]

    意味は先ほどのループとまったく同じで、新しいリストが作られて返ります。読むときは真ん中の for から読み始め、次に if の条件で残すものを決め、最後にいちばん左の式が結果になる、と考えると迷いません。

    if は省略できます。省略すると全件がそのまま新しいリストに入るので、金額だけを抜き出したいときは [e["amount"] for e in expenses] のように書けます。左の式は変数そのものでなくてよい、というのが内包表記の便利なところです。

    注意点として、内包表記は「新しいリストを作る」ための書き方です。1件ずつ画面に表示するだけの処理を内包表記で書くと、使われないリストが残ってしまいます。結果を受け取って使うときだけ内包表記にする、と覚えておいてください。

    要件

    1. for 文と append ではなく、リスト内包表記で書くこと
    2. category が一致する支出だけを残すこと
    3. 一致するものが無いときは空のリストを返すこと

    ヒント

    角かっこの中に「式 for 変数 in データ if 条件」の順で並べます

    支出は辞書なので、カテゴリの取り出しは e["category"] です

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

    関連レッスン

    • if-else付き内包表記

      式の側に if-else を置いて、高額フラグ付きのリストを作ります。

    • 辞書内包表記

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

    • set内包表記

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

    • ジェネレータ式

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

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

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

    • リスト順序付きで複数の値を扱うデータ構造
    • リスト内包表記リストを1行で生成する書き方。
    • 内包表記for と if を 1 行で書く構文
    • 処理計算や代入を表す長方形
    • 変数データに名前をつけて参照する仕組み
    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    main.py
    エディタを読み込んでいます

    メモ

    リスト内包表記と条件

    ⌘S で保存