<一覧に戻る

Pythonのlambda式(無名関数)とは?

Pythonを学び始めると、必ず出てくるキーワードのひとつにlambda式があります。 lambda式は「無名関数」とも呼ばれ、名前を付けずに一時的な関数を作るための書き方です。

普段はdefを使って関数を定義しますが、簡単な処理をわざわざdefで書くのは少し面倒ですよね。

そんなときにlambda式を使うと、1行でシンプルに関数を定義できる ため、コードを短く保つことができます。 今回は、lambda式の基本から具体的な使い方まで、初心者でも理解できるように丁寧に解説していきます。

lambda式の基本構文

まずはlambda式の基本的な形を見てみましょう。

lambda 引数: 式

この構文では引数に関数に渡す値を書き、式にその引数を使った処理を書きます。 lambda式は基本的に1行で書ける簡単な処理を定義するのに適しています。

通常の関数とlambda式の違い

例として、2つの数を加算する関数を通常の関数定義とlambda式で比較してみます。

# 通常の関数
def add(x, y):
    return x + y

# lambda式を使った関数
add_lambda = lambda x, y: x + y

# 関数の呼び出し
print(add(3, 5))         # 出力: 8
print(add_lambda(3, 5))  # 出力: 8

最初の add 関数は def を使って通常通りに定義していますが、add_lambda の方はlambda式を利用しています。 どちらも2つの引数を受け取り、その合計を返す点は同じです。

このように、lambda式は処理がシンプルな関数を「その場でサッと定義したい」ときにとても便利です。

lambda式が役立つ場面

「普通の関数で十分では?」と思うかもしれません。 ですが、lambda式が特に威力を発揮するのは関数を引数として渡すとき一時的に関数を作りたいときです。

具体的なコードで見てみましょう。 例えば、タプルを要素に持つリストを「タプルの1番目の値」でソートしたい場合、lambda式を使うととても分かりやすく書けます。

# サンプルデータ
data = [(1, 'apple'), (3, 'banana'), (2, 'orange')]

# lambda式を使ったソート
sorted_data = sorted(data, key=lambda x: x[0])

print(sorted_data)  # 出力: [(1, 'apple'), (2, 'orange'), (3, 'banana')]

ここでsorted()関数の key 引数に lambda x: x[0] を渡しています。 このlambda式は「リストの要素xから最初の値(整数)を取り出す」処理を行っており、その結果を基準に並べ替えが行われます。

通常の関数で書くともっと行数が増えてしまいますが、lambda式を使えばたった1行で書けるのが魅力です。

lambda式を使うときの注意点

便利なlambda式ですが、万能ではありません。

【複雑な処理には向かない】 lambda式は1行しか書けないため、複雑な処理を入れると逆に読みにくくなります。その場合は通常の def を使った関数定義の方が良いです。

【可読性を損なわないように注意】 短いからといって多用すると、初心者や他の開発者が理解しにくいコードになってしまうことがあります。あくまで簡単な処理をその場で書くためのツールとして使うのがおすすめです。

まとめ

今回学習した内容は、以下の通りです。

  • lambda式は「無名関数」を1行で書ける便利な仕組み
  • 通常の関数定義(def)より短く書けるので、一時的な処理に最適
  • ソートやmap、filterなどと組み合わせると強力に活用できる

Pythonのlambda式を上手に使うことで、コードをシンプルかつ分かりやすく保つことができます。 ただし、複雑な処理は通常の関数に分けるようにして、lambda式は「ちょっとした関数」を作るときに使う、という意識を持つのがベストです。

これからPythonを学んでいく方は、lambda式を「関数を省略して書くための道具」として覚えておくと、実践で役立つ場面が必ず出てくるでしょう。

出力結果: