pythonのlambda式(無名関数)について

lambda式で無名関数を定義

lambda式という比較的小規模な関数を定義するための書式があります。lambda式は無名関数とも言われ、リストや辞書の要素処理によく利用されます。

lambda 引数1,引数2,引数3,・・・

例として、引数numに代入した値をtest関数内で二乗した値を返すというコードを書いてみます。lambda式ではなく通常の関数で書くと以下のようになります。

def test(num):
    return num ** 2

print(test(5))

実行結果は以下の通りです。

% python lambda.py
25

これをlambda式で書くと以下のようになります。

test = lambda num: num ** 2

print(test(5))

lambda式で関数を定義して、結果を変数testに代入しています。

実行結果は以下の通りです。

% python lambda.py
25

lambda式を他の関数と組み合わせて使う

lambda式は他の関数と組み合わせて使うと便利です。

map()関数と組み合わせる

map()関数は、リストの要素に対して関数で指定した処理を行うことができる関数です。

map (関数,リスト)

リストlist1の各要素を二乗したものをリストとして得る場合は以下のように記述します。

def test(num):
    return num ** 2

list1 = [1,3,5]

list2 = list(map(test,list1))
print(list2)

[1,3,5]というリストのすべての要素を二乗して、list2というリストに代入しています。map()関数の最初の引数でtest()関数を指定して、2番目の引数でリストlist1を指定しています。

結果をリストに変換するために、list()関数をmap()関数の戻り値にしています。

実行結果は以下の通りです。

% python map.py
[1, 9, 25]

これをlambda式で書くと以下のようになります。

list1 = [1,3,5]

list2 = list(map(lambda x: x ** 2,list1))
print(list2)

リストの内包表記で書くことも可能です。

list1 = [1,3,5]

list2 = [x ** 2 for x in list1]
print(list2)

filter()関数と組み合わせる

filter()関数はリストの要素順に引数で指定した関数を実行して、結果が真となる要素を返します。

filter(関数, リスト)

リストの中から指定した値よりも大きい要素を取り出す例を以下に記載します。

def test(num):
    return num > 5

list1 = [1,3,5,7,9,3,6,1]
list2 = []
for num in filter(test, list1):
    list2.append(num)
print(list2)

上記コードは、list1内の要素から5よりも大きい要素のみのリストlist2を生成しています。

実行結果は以下の通りです。

% python filter.py
[7, 9, 6]

上記コードをlambda式で記載すると以下のようになります。

list1 = [1,3,5,7,9,3,6,1]
list2 = []
for num in filter(lambda num:num > 5, list1):
    list2.append(num)
print(list2)

内包表記を使用した記載は以下のようになります。

list1 = [1,3,5,7,9,3,6,1]
list2 = [num for num in list1 if num > 5]
print(list2)

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: