工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Pythonラムダ関数をマスターする:実例とベストプラクティス

Pythonラムダ関数をマスターする:実例とベストプラクティス

ラムダ関数は「無名関数」とも呼ばれ、小さな使い捨てルーチンを1行で記述できます。map、filter、reduceと組み合わせると特に便利で、関数型スタイルのコードで威力を発揮します。

ラムダ関数とは?

ラムダはdefの代わりにlambdaキーワードで定義される関数です。ゼロ個以上のパラメータを取り、単一の式の値を返します。本体が式であるため、ラムダには文や複数行を含められません。

すべてのラムダには3つの要素があります:

例: lambda x, y: x + yは2つの数を加算します。無名ですが、変数に代入したり、他の関数に渡したり、即座に呼び出したりできます。

ラムダの書き方

形式的な構文:

lambda p1, p2, ... : expression

パラメータの周りに括弧がないことに注意してください。式には有効なPython操作をすべて使用できます。

例1: シンプルな加算

adder = lambda x, y: x + y
print(adder(1, 2))  # → 3

例2: ラムダオブジェクトの検査

string = 'some kind of a useless lambda'
print(lambda string: print(string))  # → <function <lambda> at 0x...>

ここではラムダが呼び出されず、printがラムダの返す関数オブジェクトを表示しています。

例3: 即時実行ラムダ(IIFE)

(lambda x: print(x))('IIFE in action')  # → IIFE in action

定義を括弧で囲み、その後に括弧を追加することで即座にラムダを呼び出します。

例4: ラムダ vs 通常の関数

# 通常の関数
def printer(arg):
    return print(arg)

# 関数を呼び出すラムダ
guru(lambda: printer('Lambda call'))  # → Lambda call

両方とも同じ出力ですが、ワンショットの呼び出しのみが必要な場合、ラムダ版の方が簡潔です。

組み込み関数とのラムダ活用

ラムダは高階関数へのコールバックとして渡すときに真価を発揮します。一般的なパターンを以下に示します。

Pythonにおける即時実行関数式(IIFE)

(lambda x: x + x)(2)  # → 4

filter

filter関数は述語を満たす要素を保持します。

sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1]
filtered = filter(lambda x: x > 4, sequences)
print(list(filtered))  # → [10, 8, 7, 5, 11]

map

map関数は各要素を変換します。

sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1]
squared = map(lambda x: x * x, sequences)
print(list(squared))  # → [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]

reduce

reduceを使ってシーケンスから単一の値を累積します。

from functools import reduce
sequences = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, sequences)
print(product)  # → 120

ラムダを使うべき時・避けるべき時

ラムダは単一の式に収まる簡潔なワンショット操作に最適です。mapやfilterのような関数型プログラミング構成でよく使われます。

しかし、本番コードで過度に複雑なラムダは避けてください。長く読みにくいワンライナーは保守性を損ないます。そのような場合は、明確なdocstringを持つ名前付き関数が望ましいです。

ラムダ vs 通常の関数

特徴ラムダ通常の関数
構文lambda x: x + xdef add(x): return x + x
本体単一の式のみ複数の文を許可
命名無名(識別子なし)名前が必要
戻り値式から暗黙的にreturnで明示的に
ユースケース短い使い捨てロジック再利用可能な複雑なロジック

まとめ

Python

  1. C++演算子オーバーロード:コード例付き実践ガイド
  2. C++関数を実例で徹底解説:基本から応用まで
  3. Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
  4. Python ラムダ関数: 無名関数の実践ガイド
  5. Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
  6. Python print()関数の実践ガイド:基本から応用まで
  7. Python strip()メソッド完全ガイド:実践例付き
  8. Python str.count()マスター:文字と部分文字列のカウント実例集
  9. Python format()文字列を明確な例でマスター
  10. Python String.find()メソッド完全ガイド:構文、例、代替手法
  11. Python abs()関数:数値と複素数の絶対値を計算