コース一覧
    Python内包表記・高階関数
    filter

    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分

    filter

    このレッスンでできるようになること。filter を使って、条件に合う支出だけを取り出せるようになります。

    filter(関数, リスト) は、リストの要素を1つずつ関数に渡し、戻り値が真になった要素だけを順に取り出せるものを返します。map が「全部を変換する」道具だったのに対し、filter は「一部だけ残す」道具です。要素そのものは変わりません。

    Python

    amounts = [220, 640, 1280]
    print(list(filter(lambda a: a >= 500, amounts)))   # [640, 1280]

    filter も map と同じで、返ってくるのは filter オブジェクトです。そのまま返すと呼び出し側で扱いにくく、一度使い切ると空になってしまいます。結果を使うときは必ず list() に通してください。

    渡す関数は真偽値を返す形にします。このような判定用の関数を述語と呼びます。lambda で書いてもよいですし、条件に名前を付けたいときは def で書いて渡しても構いません。

    Python

    def is_food(expense):
        return expense["category"] == "食費"
    
    expenses = [
        {"name": "牛乳", "amount": 220, "category": "食費"},
        {"name": "電車代", "amount": 640, "category": "交通費"},
    ]
    print(list(filter(is_food, expenses)))

    第3章のリスト内包表記でも同じことは書けます。どちらを選んでも構いませんが、既にある関数をそのまま条件として使い回したいときは filter のほうが素直です。条件に名前が付いていると、後から読む人が何を残したかったのかを一目で理解できます。

    要件

    1. filter を使って絞り込む
    2. amount が下限金額以上のものを残す(下限ちょうども残す)
    3. filter オブジェクトではなく list を返す

    ヒント

    list(filter(lambda e: ..., expenses)) の形になります

    「以上」なので比較は >= です。> にすると下限ちょうどの支出が消えます

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

    関連レッスン

    • sortedとkeyの応用

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

    • reduce

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

    • anyとall

      any と all で、予算超過が1件でもあるかを判定します。

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

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

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

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

    • リスト順序付きで複数の値を扱うデータ構造
    • 関数処理に名前を付けて再利用できる単位
    • 戻り値呼び出し元への返答を表す点線矢印
    • オブジェクトキーと値のペアで構造を作るデータ
    • lambda名前のない小さな関数を1行で定義する記法。
    • リスト内包表記リストを1行で生成する書き方。
    • 内包表記for と if を 1 行で書く構文
    main.py
    エディタを読み込んでいます

    メモ

    filter

    ⌘S で保存