スポンサーリンク

【Python入門】lambda(ラムダ式)の使い方をわかりやすく解説|mapやfilterとの組み合わせも紹介!

Python入門
  1. 1. はじめに|ラムダ式って難しそう?でも大丈夫!
  2. 2. ラムダ式とは?|名前のない関数を作る方法
    1. ✅ ラムダ式ってなに?
    2. ✅ 書き方のルール
    3. ✅ ラムダ式の制限ってあるの?
  3. 3. ラムダ式の使い方|サクッと実践してみよう
    1. ✅ 変数に代入して関数のように使う
    2. ✅ こんなときに便利:関数を一時的にその場で作って使いたいとき
    3. ✅ まとめ:ラムダ式の使い方のポイント
  4. 4. map関数とlambdaの組み合わせ|全要素に同じ処理をしたいとき
    1. ✅ map関数とは?
    2. ✅ 具体例①:名前リストに「さん」をつける
    3. ✅ 具体例②:すべての数字を2倍にする
    4. ✅ ちょっと応用:複数のリストを同時に処理
    5. ✅ なぜ map × lambda が便利なの?
  5. 5. filter関数とlambdaの組み合わせ|条件に合うものだけを抽出
    1. ✅ filter関数とは?
    2. ✅ 具体例①:10以上の数字だけを取り出す
    3. ✅ 具体例②:偶数だけを取り出す
    4. ✅ filter × lambda のポイント
    5. ✅ filterとmapの違いって?
  6. 6. リスト内包表記との比較|どっちを使うべき?
    1. ✅ map とリスト内包表記の比較
      1. 例:数字を2倍にする場合
    2. ✅ filter とリスト内包表記の比較
      1. 例:偶数だけ取り出す場合
    3. ✅ 使い分けのコツ
    4. ✅ リスト以外にも使いたいなら?
  7. 7. その他の組み合わせ|ラムダ式が活躍するいろんな場面
    1. ✅ 例1:sorted() で並び替えの条件をカスタマイズ
    2. ✅ 例2:GUIライブラリ(Tkinterなど)のコールバック関数
    3. ✅ 例3:Pandasの apply() でデータ加工(今後の伏線)
    4. ✅ まとめ:ラムダ式は“その場でちょい使い”が得意!
  8. 8. まとめ|lambdaを使いこなすとPythonがもっと楽しくなる
    1. ✅ この記事で学んだこと
    2. ✅ ラムダ式を使いこなすコツ
    3. あわせて読みたい
  9. よくある質問(Q&A)
    1. 関連投稿:

1. はじめに|ラムダ式って難しそう?でも大丈夫!

Pythonを勉強していると、たま〜に出てくる「lambda(ラムダ式)」というキーワード。初めて見ると「え、なにこれ……?」ってなりますよね。

実はこのラムダ式、**“名前のない小さな関数”**を作るためのちょっとした記法なんです。

関数っていうと普通は def を使って定義しますが、ラムダ式を使えばたった1行で関数を定義できるので、コードをスッキリ書きたいときにとっても便利なんですよ。

たとえば、リストの中の数字を全部2倍にしたいとか、10以上の数字だけを取り出したい、なんてときに大活躍します!


しかも、mapfilter といった関数と組み合わせて使うと、さらに威力を発揮するんです。

とはいえ、最初は「なんでわざわざこんな書き方するの?」と疑問に思うかもしれません。そんなあなたのために、この記事では以下のような内容をやさしく・わかりやすく解説していきます!

  • ラムダ式って何なの?
  • どうやって書くの?
  • どんなときに使うの?
  • mapやfilterと一緒に使うと何がうれしいの?

初心者の方でも安心して読み進められるように、実際のコード例や具体的な使い方もたっぷり紹介していきます。

「なんだ、ラムダ式って意外と簡単じゃん!」と思ってもらえるように、しっかりサポートしていきますね!それでは、さっそく基本の使い方から見ていきましょう!




2. ラムダ式とは?|名前のない関数を作る方法

Pythonでは関数を作るとき、ふつうは def を使ってこう書きますよね:

def add(x, y):
return x + y

でも、ちょっとした処理のために毎回 def で名前をつけて……って、ちょっと面倒くさいときもあります。
そんなときに登場するのが 「ラムダ式(lambda式)」 です!

✅ ラムダ式ってなに?

ラムダ式とは、名前のない関数(無名関数)を作るための記法のこと。
処理内容が1行で済むような簡単な関数をその場で使いたいときにぴったりです。

たとえば、さっきの add 関数と同じことをラムダ式で書くと、こんなふうになります:

lambda x, y: x + y

このままだと実行はできないので、関数として使いたいときは変数に代入します:

add = lambda x, y: x + y
print(add(3, 4)) # → 7

✅ 書き方のルール

ラムダ式の書き方はとってもシンプル:

lambda 引数: 処理
  • lambda のあとに 引数 を書いて、
  • : のあとに 処理内容(返り値) を書くだけ!

たとえば、数字を2倍にする関数をラムダ式で書くと:

lambda x: x * 2

この関数は、渡された値 x を2倍にして返します。


✅ ラムダ式の制限ってあるの?

実は、ラムダ式には1つだけルールがあります。それは…

処理を1行で書かないといけない!

つまり、if 文や for 文などの複雑な処理は書けません
あくまで「ちょっとだけ処理したいとき」に使う、お手軽関数なんですね。




3. ラムダ式の使い方|サクッと実践してみよう

ここでは、実際にラムダ式をどう使うのかをサクッと紹介します。
「読むだけじゃイメージできない!」という人も、コードを一緒に動かしてみるとスッと理解できるはず!


✅ 変数に代入して関数のように使う

まずは基本の使い方。ラムダ式は関数オブジェクトなので、変数に代入して呼び出すことができます。

# 足し算をする無名関数を代入
add = lambda x, y: x + y

print(add(5, 3)) # → 8

この書き方だと、def を使わなくてもその場で関数が作れちゃいます!

ただし、Pythonのコーディング規約(PEP8)ではこの使い方はあまり推奨されていません
理由は、「だったら素直に def を使おうよ」ってことですね。読みやすさ重視です。


✅ こんなときに便利:関数を一時的にその場で作って使いたいとき

ラムダ式が本領を発揮するのは、map()やfilter()など、関数を引数として渡す場面です。
「ちょっとした処理だけのために def で関数を用意するのは面倒…」
そんなとき、1行で済むラムダ式はめちゃくちゃ便利です。

例として、次のセクションでは map() 関数とラムダ式を組み合わせて使う方法を紹介します。


✅ まとめ:ラムダ式の使い方のポイント

ポイント内容
基本構文lambda 引数: 処理
使用タイミングちょっとした処理を関数として使いたいとき
複雑な処理には不向きif文やfor文などの多段処理は書けない
よくある使い方map(), filter(), sorted() などの中で使用



4. map関数とlambdaの組み合わせ|全要素に同じ処理をしたいとき

Pythonで「リストの全ての要素に同じ処理をしたい!」って思ったことありませんか?

そんなときに便利なのが、map()関数
さらに、ラムダ式と組み合わせれば、超シンプルに処理をまとめることができます!


✅ map関数とは?

map()関数は、リストやタプルなどのすべての要素に、同じ関数を適用してくれる関数です。

書き方はとってもカンタン:

map(関数, 繰り返しオブジェクト)

でも、ここで「関数」を毎回定義するのは面倒…。
そんなときに大活躍するのが ラムダ式!


✅ 具体例①:名前リストに「さん」をつける

names = ['田中', '佐藤', '鈴木']

result = list(map(lambda x: x + 'さん', names))

print(result)
# 出力結果 → ['田中さん', '佐藤さん', '鈴木さん']

ポイントはこの部分:

lambda x: x + 'さん'

これが、リストの各要素に対して「’さん’をつける処理」を表しています。


✅ 具体例②:すべての数字を2倍にする

numbers = [1, 2, 3, 4, 5]

result = list(map(lambda x: x * 2, numbers))

print(result)
# 出力結果 → [2, 4, 6, 8, 10]

1行で済む簡単な処理なので、defで関数を定義するよりラクですね。


✅ ちょっと応用:複数のリストを同時に処理

ラムダ式に複数の引数を渡せば、2つのリストを同時に処理することもできます!

a = [1, 2, 3]
b = [10, 20, 30]

result = list(map(lambda x, y: x + y, a, b))

print(result)
# 出力結果 → [11, 22, 33]
  • xa の要素、yb の要素がそれぞれ入って、
  • x + y の計算がされるイメージです。

✅ なぜ map × lambda が便利なの?

  • for文で書くよりもコンパクトで読みやすい
  • 関数の定義を省略できるからコードがスッキリ
  • 他の関数と組み合わせて一発変換ができる



5. filter関数とlambdaの組み合わせ|条件に合うものだけを抽出

「リストの中から特定の条件を満たす要素だけを取り出したい」
そんなときに便利なのが、Pythonの**filter()関数**です!

しかも、ラムダ式と一緒に使うことでコードがとってもスッキリします。
さっそく使い方を見ていきましょう!


✅ filter関数とは?

filter()関数は、ある条件に合う要素だけを取り出してくれる関数です。

基本の書き方はこちら:

filter(関数, 繰り返しオブジェクト)

この「関数」部分にラムダ式を入れることで、その場で条件を定義できちゃうんです!


✅ 具体例①:10以上の数字だけを取り出す

numbers = [3, 10, 15, 2, 20]

result = list(filter(lambda x: x >= 10, numbers))

print(result)
# 出力結果 → [10, 15, 20]

このラムダ式:

lambda x: x >= 10

は「xが10以上かどうか」をチェックしています。
Trueになる要素だけが結果として残るんですね!


✅ 具体例②:偶数だけを取り出す

nums = [1, 2, 3, 4, 5, 6]

even = list(filter(lambda x: x % 2 == 0, nums))

print(even)
# 出力結果 → [2, 4, 6]

x % 2 == 0 で偶数かどうかを判定しています。
このように、シンプルな条件をその場で書けるのがラムダ式の強みです。


✅ filter × lambda のポイント

  • 条件に合ったものだけを一発で取り出せる
  • if文とループを組み合わせるよりスッキリ
  • 複雑なフィルター処理も読みやすくなる

✅ filterとmapの違いって?

関数やること
map要素を変換・加工する
filter要素を**選別(条件抽出)**する

つまり、「すべてに処理したい」なら map、「条件で取り出したい」なら filter を使うイメージです!




6. リスト内包表記との比較|どっちを使うべき?

Python初心者がよく疑問に思うのが、

mapfilterってリスト内包表記と何が違うの?」

という点。

実は、リスト内包表記map()filter()ほぼ同じことができるんです。
だからこそ、「どっちを使えばいいの?」と迷うんですね。


✅ map とリスト内包表記の比較

例:数字を2倍にする場合

map + lambda を使うと:

numbers = [1, 2, 3]
result = list(map(lambda x: x * 2, numbers))

リスト内包表記を使うと:

numbers = [1, 2, 3]
result = [x * 2 for x in numbers]

どちらでも同じ結果が得られます。

# 出力 → [2, 4, 6]

違いのポイント:

  • 読みやすさ重視ならリスト内包表記が人気
  • 関数の引数に関数を渡したい場面では map() の方が便利

✅ filter とリスト内包表記の比較

例:偶数だけ取り出す場合

filter + lambda を使うと:

nums = [1, 2, 3, 4]
result = list(filter(lambda x: x % 2 == 0, nums))

リスト内包表記を使うと:

nums = [1, 2, 3, 4]
result = [x for x in nums if x % 2 == 0]

これもまったく同じ結果になります。

# 出力 → [2, 4]

✅ 使い分けのコツ

シーンおすすめ
処理内容がシンプル・読みやすさ重視リスト内包表記
関数の引数として使いたい(例:関数の中で使う)lambda + map/filter
他の関数とネストして使うlambdaが便利な場面も多い

✅ リスト以外にも使いたいなら?

map()filter() は、リスト以外の繰り返しオブジェクト(タプル、集合など)でも使えるのが強みです!

リスト内包表記はリストしか作れませんが、map()filter()は柔軟に使えるのがメリット。

つまり、「Pythonらしい書き方」を追求したい人にはリスト内包表記がオススメですが、関数型っぽく書きたい人や、データ型を選ばずに処理したいときはラムダ式の出番というわけです。




7. その他の組み合わせ|ラムダ式が活躍するいろんな場面

ここまでで map()filter() とラムダ式を組み合わせる使い方を学びましたが、実はラムダ式の活躍の場はそれだけじゃありません!

Pythonでは**「関数を引数にする関数」**がたくさんあって、そこでもラムダ式がよく使われます。ここでは代表的な使い方をいくつか紹介しておきますね!


✅ 例1:sorted() で並び替えの条件をカスタマイズ

たとえば、「名前と年齢のリストを年齢順に並べたい」ってときに、ラムダ式が大活躍します!

people = [
{'name': '田中', 'age': 30},
{'name': '佐藤', 'age': 25},
{'name': '鈴木', 'age': 35}
]

sorted_people = sorted(people, key=lambda x: x['age'])

for p in sorted_people:
print(p['name'], p['age'])

# 出力:
# 佐藤 25
# 田中 30
# 鈴木 35

ここで使っている lambda x: x['age'] は「辞書の中の age キーを基準に並び替えてね!」という意味です。


✅ 例2:GUIライブラリ(Tkinterなど)のコールバック関数

GUIアプリなどで、ボタンがクリックされたときの処理を設定する場面でもラムダ式は便利です。

import tkinter as tk

root = tk.Tk()

btn = tk.Button(root, text="クリックしてね", command=lambda: print("押された!"))
btn.pack()

root.mainloop()

ここでは、lambda: を使ってその場でちょっとした処理を登録しています。


✅ 例3:Pandasの apply() でデータ加工(今後の伏線)

Pythonでデータ分析をするときによく使う Pandasライブラリ でも、ラムダ式はバンバン出てきます!

import pandas as pd

df = pd.DataFrame({
'name': ['A', 'B', 'C'],
'score': [60, 80, 90]
})

# スコアに応じて判定をつける
df['result'] = df['score'].apply(lambda x: '合格' if x >= 70 else '不合格')

print(df)

これも apply にラムダ式を渡すことで、各行ごとに柔軟な処理ができるんですね!

Pandasでの活用法は、次回以降の記事でたっぷり解説予定ですのでお楽しみに!


✅ まとめ:ラムダ式は“その場でちょい使い”が得意!

使用場面具体例
並び替えsorted(..., key=lambda x: ...)
イベント処理command=lambda: 処理()
データ加工apply(lambda x: ...)

**「関数を引数に取る関数」**の中で、「一時的に簡単な関数を渡したいな〜」ってときには、ラムダ式が最高に便利なんです!




8. まとめ|lambdaを使いこなすとPythonがもっと楽しくなる

ここまでラムダ式(lambda)の基本から、具体的な使い方、mapfilterとの組み合わせ、他の関数との連携までじっくり見てきました。

「なんとなく難しそう…」と思われがちなラムダ式ですが、実はとってもシンプルで便利なツールなんです!


✅ この記事で学んだこと

  • ラムダ式とは?
    → 名前のない関数をその場で1行で作れる便利な書き方!
  • 基本の書き方
    lambda 引数: 処理内容 でOK!
  • mapやfilterとの連携
    → リストの要素を一括処理・条件抽出するのにぴったり!
  • リスト内包表記との違い
    → 書き方の好みや目的に応じて使い分けられる!
  • 応用テクニック
    sorted, apply, GUIのイベント処理など、いろんな場面で大活躍!

✅ ラムダ式を使いこなすコツ

  • 複雑な処理には使わない!(あくまで「1行限定」)
  • 一時的な関数が必要なときにサッと使う
  • map, filter, sorted, apply などと一緒に使うと効果倍増!

Pythonをもっとスッキリ書きたいとき、ラムダ式はあなたの強い味方になります。
最初はちょっと慣れが必要かもしれませんが、ぜひ色んな場面で使ってみてくださいね!


あわせて読みたい

ラムダ式を学んだ今、あわせてチェックしておくと理解が深まる記事をご紹介します!


よくある質問(Q&A)

Q
ラムダ式は def 関数とどう違うの?
A

ラムダ式は1行で書ける「簡単な関数」を作るための記法です。
def は複数行の処理も書けますが、ラムダ式は「1つの式」しか書けないという制限があります。

Q
初心者でもラムダ式を使ったほうがいいの?
A

使いどころがわかれば、とても便利です!
ただし、無理に使おうとすると逆に読みづらくなるので、最初は map()filter() と一緒に練習するのがオススメです。

Q
ラムダ式の中で if文やfor文って使えるの?
A

ラムダ式ではif文やfor文のような複数行の処理は使えません
ただし、三項演算子(A if 条件 else B)のように、1行で書けるif処理なら使えます。

lambda x: '合格' if x >= 60 else '不合格'

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク