カテゴリ: Python 更新日: 2025/11/26

Pythonのラムダ式とfilter関数の使い方を完全ガイド!初心者でもわかるデータ抽出

Pythonのラムダ式とfilter関数を使ったデータ抽出の例
Pythonのラムダ式とfilter関数を使ったデータ抽出の例

先生と生徒の会話形式で理解しよう

生徒

「Pythonでたくさんのデータの中から、条件に合うものだけを取り出す方法ってありますか?」

先生

「はい、Pythonではfilter関数とラムダ式を使うと、簡単に条件に合ったデータだけを抽出できますよ。」

生徒

「ラムダ式ってなんですか?名前がかっこいいですね。」

先生

「ラムダ式は短く書ける関数のことです。例えば、『偶数だけ取り出す』や『100点以上だけを抽出する』といった処理を、1行で書けます。」

生徒

「すごい!ぜひ使い方を教えてください。」

1. ラムダ式とは?

1. ラムダ式とは?
1. ラムダ式とは?

Pythonのラムダ式は、簡単にいうと「その場で作れる小さな関数」です。普通の関数はdefで作りますが、ラムダ式はlambdaというキーワードを使って1行で書けます。

例えば、数字を2倍にする関数を作る場合、通常はこう書きます。


def double(x):
    return x * 2

ラムダ式を使えば、次のように短く書けます。


lambda x: x * 2

この「lambda x: x * 2」は、「xを受け取ってx×2を返す」という関数です。とてもシンプルですね。

2. filter関数とは?

2. filter関数とは?
2. filter関数とは?

filter関数は、「条件に合うデータだけを残す」ための関数です。イメージとしては「ふるいにかけて不要なデータを取り除く」感じです。

構文は以下のようになります。


filter(条件を判定する関数, 対象のデータ)

このとき、条件を判定する関数にはラムダ式を使うと非常に便利です。

3. ラムダ式とfilter関数を組み合わせた例

3. ラムダ式とfilter関数を組み合わせた例
3. ラムダ式とfilter関数を組み合わせた例

それでは具体例を見てみましょう。例えば、あるクラスのテストの点数リストから、60点以上の合格者だけを抽出したいとします。


scores = [55, 70, 42, 90, 68, 100, 35]

# filter関数とラムダ式で合格者を抽出
passed_scores = list(filter(lambda x: x >= 60, scores))

print(passed_scores)

実行結果は以下の通りです。


[70, 90, 68, 100]

このコードでは、「lambda x: x >= 60」という条件を使って、60点以上だけを残しています。filter関数は「条件に合うものだけを返す」ので、このように合格者だけのリストができあがります。

4. 別の例:偶数だけを抽出

4. 別の例:偶数だけを抽出
4. 別の例:偶数だけを抽出

次は、数のリストから偶数だけを取り出す例です。


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 偶数だけ抽出
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

print(even_numbers)

実行結果は以下の通りです。


[2, 4, 6, 8, 10]

偶数かどうかは「x % 2 == 0」で判定します。これは「xを2で割った余りが0なら偶数」という意味です。

5. filter関数とリスト内包表記の違い

5. filter関数とリスト内包表記の違い
5. filter関数とリスト内包表記の違い

Pythonでは、filter関数を使わなくてもリスト内包表記という方法で同じことができます。

例えば、先ほどの偶数抽出は次のようにも書けます。


even_numbers = [x for x in numbers if x % 2 == 0]

filter関数とラムダ式の組み合わせは、特にシンプルな条件で使うとコードが短くなって読みやすくなります。

6. まとめではないけれど注意点

6. まとめではないけれど注意点
6. まとめではないけれど注意点

filter関数を使うときの注意点は、結果が「イテレータ」という形式で返ってくることです。これは、そのままではリストのように中身が見えない形式です。そのため、上の例ではlist()で囲んでリストに変換しています。

また、ラムダ式は短く書ける反面、処理が長く複雑になる場合は通常のdef関数を使ったほうが読みやすくなります。

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説