• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Python lambdaの使い方

この記事のポイント

Pythonプログラミングにおいて、lambda関数は短いコードで効率的な処理を実現する強力なツールです。初心者の方にも理解しやすいよう、基本から応用まで段階的に解説していきます。

  • 短い処理を1行で記述できる無名関数の基本概念と活用場面を理解する
  • 通常の関数定義との違いを理解し、どちらを使うべきか適切に判断できるようになる
  • map関数やfilter関数などと組み合わせることで実践的な活用方法を知る

本記事を読むことで、lambda関数の特徴を理解し、実際のプログラミングで効果的に活用できるようになります。

目次

lambdaとは?

Pythonのlambdaは、名前を持たない小さな関数を作成するための機能で、無名関数とも呼ばれます。通常のdef文で定義する関数とは異なってlambda関数は1行で記述でき、式として扱われるため、他の関数の引数として直接渡すことができます。主にmap関数やfilter関数、sort関数などと組み合わせて使用され、コードがより短く、読みやすくなります。

なお、lambda関数は簡単な計算や条件の判定には便利ですが、複雑な処理には向いていません。この特性を理解することで、適切な場面でlambda関数を使えるようになりましょう。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

基本構文

lambdaの基本的な書き方は「lambda 引数: 戻り値」という形式です。普通の関数を定義する時と比べてdefや関数名、return文がいらないのでとてもシンプルです。

# 通常の関数定義 def add_normal(x, y): return x + y # lambda関数 add_lambda = lambda x, y: x + y print(add_normal(3, 5)) print(add_lambda(3, 5))

出力結果

8
8

引数が1つだけの場合はさらにシンプルになります。また、lambda関数を変数に代入しておけば、後から何度でも利用することが可能です。

# 1つの引数を持つlambda関数 square = lambda x: x ** 2 double = lambda n: n * 2 print(square(4)) print(double(7))

出力結果

16
14

実用例

lambda関数が真価を発揮するのは、他の関数と組み合わせて使うときです。map関数やfilter関数、sort関数などと組み合わせることで、データ処理が格段に効率がよくなります。

ここでは、実際のプログラミングでよく使われる場面を想定したコード例を8つ紹介します。これらの例を見れば、lambda関数がどのような場面で役立つのかを理解できるでしょう。

リストの各要素を変換する処理

map関数とlambda関数を一緒に使うことで、リスト内の全ての要素に同じ処理を実行できます。この例では動物の名前リストの各要素を、すべて大文字に変換しています。

animals = ["cat", "dog", "rabbit", "hamster"] uppercase_animals = list(map(lambda x: x.upper(), animals)) print(uppercase_animals)

出力結果

['CAT', 'DOG', 'RABBIT', 'HAMSTER']

条件に合う要素を抽出する処理

filter関数とlambda関数を組み合わせることで、特定の条件を満たす要素だけを抽出できます。この例では、文字数が3文字以上の動物の名前だけを取り出しています。

animals = ["ネコ", "イヌ", "ウサギ", "ハムスター", "カメ"] long_name_animals = list(filter(lambda x: len(x) >= 3, animals)) print(long_name_animals)

出力結果

['ウサギ', 'ハムスター']

数値リストの並び替え処理

sort関数のkeyという引数にlambda関数を渡すことで、並び替えるための独自のルールを設定することができます。ここでは、動物の体重データを昇順で並び替えています。

animal_weights = [("ネコ", 4.5), ("イヌ", 12.3), ("ウサギ", 2.1), ("ハムスター", 0.15)] sorted_animals = sorted(animal_weights, key=lambda x: x[1]) print(sorted_animals)

出力結果

[('ハムスター', 0.15), ('ウサギ', 2.1), ('ネコ', 4.5), ('イヌ', 12.3)]

辞書データの並び替え処理

辞書のリストを特定のキーを基準にして並び替える際にもlambda関数が活躍します。ここでは、動物の年齢データを年齢の若い順に並ぶようにする、実用的な例を紹介します。

animals_data = [{"name": "ネコ", "age": 3}, {"name": "イヌ", "age": 7}, {"name": "ウサギ", "age": 2}] sorted_by_age = sorted(animals_data, key=lambda x: x["age"]) print(sorted_by_age)

出力結果

[{'name': 'ウサギ', 'age': 2}, {'name': 'ネコ', 'age': 3}, {'name': 'イヌ', 'age': 7}]

数値演算の一括処理

lambda関数を使えば、数値のリストに対して計算処理を効率的に行えます。動物の体重を2倍にする処理を通して、数値を変換する実用的な方法を紹介します。

weights = [4.5, 12.3, 2.1, 0.15] doubled_weights = list(map(lambda x: x * 2, weights)) print(doubled_weights)

出力結果

[9.0, 24.6, 4.2, 0.3]

文字列の部分抽出処理

lambda関数を使って、文字列の一部を抽出する処理も可能です。この例では、動物の名前から最初の文字だけを取得して、頭文字のリストを作成しています。

animals = ["ネコ", "イヌ", "ウサギ", "ハムスター", "カメ"] first_chars = list(map(lambda x: x[0], animals)) print(first_chars)

出力結果

['ネ', 'イ', 'ウ', 'ハ', 'カ']

複合条件でのフィルタリング処理

複数の条件を同時に満たすデータを抽出する際にも、lambda関数を使えば簡潔に記述できます。この例では、体重が5kg以上でかつ年齢が5歳未満の動物だけを取り出しています。

animals = [("ネコ", 4.5, 3), ("イヌ", 12.3, 7), ("ウサギ", 2.1, 2), ("ブタ", 15.2, 4)] filtered = list(filter(lambda x: x[1] >= 5 and x[2] < 5, animals)) print(filtered)

出力結果

[('ブタ', 15.2, 4)]

最大値・最小値の検索処理

max関数やmin関数のkey引数にlambda関数を使用することで、複雑なデータの中からでも最大値や最小値を効率よく見つけられます。

ここでは、動物のデータから最も軽い動物を検索する例を紹介します。

animals = [("ネコ", 4.5), ("イヌ", 12.3), ("ウサギ", 2.1), ("ハムスター", 0.15)] lightest_animal = min(animals, key=lambda x: x[1]) print(lightest_animal)

出力結果

('ハムスター', 0.15)

まとめ

lambda関数は、短い処理を効率的に記述するための便利な機能です。無名関数として1行で処理を表現でき、map関数やfilter関数といった関数と組み合わせることで、データ処理が格段にスムーズになります。

この関数を適切に活用することで、コードが読みやすくなり、管理のしやすさが向上するでしょう。

Python lambdaの活躍する場面

  • リストやタプルの要素に、一時的な変換処理を加えたいとき
  • データを並び変えたり絞り込んだりするときに、カスタム条件を簡単に指定したいとき
  • map関数やfilter関数などの他の関数の引数に渡すための、簡潔な処理ロジックとして使いたいとき

重要なポイント

  • 簡単な処理だけに使って、複雑な処理はdefを使った通常の関数で実装すること
  • 無理に1行で書こうとせず、コードの読みやすさを優先し、過度に複雑なlambda式は避けること
  • デバッグが難しくなるため、lambda関数を使うべき場面かをよく考えてからの使用を心がけること

lambda関数を理解することで、Pythonプログラミングの表現力が大きく広がります。基本的な構文から実用的な活用方法まで習得し、効率的なコード作成に役立ててください。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python lambdaの使い方