0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】lambda関数の使い方

Last updated at Posted at 2021-10-15

はじめに

lambda関数(ラムダ式)、また無名関数と呼ばれています。
名前の通り、名前の無い関数です(笑)。
前編前前編leaky ReLUReLUグラフを作成した時に、

list(map(lambda x: relu(x), X))

このようなコードがあります。今回はそれについて話したいと思います。

lambda関数

lambda parameter(s): expression
  • parameter(s): パラメーターが複数であれば、"","" で区切りします。
  • expression: 計算式です。

例:

tashisan = lambda x, y: x + y
print(tashisan(2, 4))
"""
結果:
6
"""

lambda関数+map関数

map(lambda parameter: expression, iterable)

反復可能なオブジェクトの各要素に、特定の計算式を適用します。

  • iterable: 反復可能なオブジェクトです(listとか)。
  • parameter: 反復可能なオブジェクトの各要素です。
  • expression: 各要素に適用する計算式です。

例えば、学生の成績を全員に20点追加しようとするなら

student_scores = [20, 30, 40, 50]

score_up = map(lambda score: score + 20, student_scores)
print(score_up)
# <map object at 0x7f868734dd90>

score_upの戻り値はメモリのアドレスです。

listの戻り値が欲しかったら、

list(map(lambda xxx))

で書く必要があります。

もう一度試すと

print(list(score_up))
"""
結果:
[40, 50, 60, 70]
"""

ReLUグラフ作成時のコード

import numpy as np

# 反復可能なオブジェクト
X = np.linspace(-10, 10, 100)

# 計算式
def relu(x) :
    return max(x, 0)
    
list(map(lambda x: relu(x), X))

説明:
-10~10の間の100個数値をそれぞれReLUに適用させて、
戻り値をlistに格納します。

更新: コメントのご指摘により、

list(map(lambda x: relu(x), X))

list(map(relu, X))

また

[(relu(x) for x in X)]

に書けばいいです。

lambda関数 v.s 普通の関数(function)

最後に、lambda関数と普通の関数を軽く比較します。

lambda function
名前 必要ない 必要 (def fun_name:)
計算式 一行のみ 複数行可能
戻り値 自動的に戻る returnというキーワード必要

以上、簡単にまとめました。

0
2
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?