pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

Pythonのlambda式について

lambda式とは?


無名関数を記述する方法

無名関数とは?


・関数宣言をせずに使える関数
・一度だけしか使われない使い捨ての関数。名前をつける必要がないため無名関数と呼ばれる

使い方

lambda 引数:返り値

コロンの左側に記述されたオブジェクトは引数。
式の中のオブジェクト名はxがよく使われているが、aでもhogeでもOK

例) lambda式を使わない場合


コード

def test(a):
    return a * 2

b = test(3)
print(b)

実行結果

6

例) lambda式を使う場合


コード

b = lambda a: a * 2
print(b(3))
print(type(b))

実行結果

6
<class 'function'>

よく見る使われ方


高階関数と一緒に利用される。

高階関数は、関数を引数にしたり戻り値にする関数

例) map関数と使うケース


map関数は、引数に関数とリストを取る。
リストの各要素に対し指定された関数処理をするgeneratorオブジェクトを返す。

コード

l = map(lambda x: x ** 2, [1, 2, 3])
print(l.__next__())
print(l.__next__())
print(l.__next__())

実行結果

1
4
9

例) sorted関数のkeyパラメータとの使われ方1


sorted関数のkeyパラメータは比較を行う前にリストの各要素に対して呼び出される★関数★を指定するパラメータ
並べ替えは、関数の実行結果を使って行われる。

ソート HOW TO — Python 3.6.1 ドキュメント

コード

a = [1,2,3]
b = sorted(a)
print(b)
b = sorted(a, key=lambda x: x * -1)
print(b)

実行結果

[1, 2, 3]
[3, 2, 1]

各要素に対してlambda式で指定した無名関数(-1で掛け算)を実行した結果を使ってソートする。

例) sorted関数のkeyパラメータとの使われ方2

コード

a = [[0,10], [1,9], [2,8]]
b = sorted(a)
print(b)
b = sorted(a, key=lambda x: x[1])
print(b)

実行結果

[[0, 10], [1, 9], [2, 8]]
[[2, 8], [1, 9], [0, 10]]

各要素がリストの場合、その2個目の要素の値を使ってソートする。