LESSON 24 ・ 関数
ラムダ式
ラムダ式で関数を作る
square = lambda x: x * x
a = square(3)
print(a)
ラムダ式(ラムダしき, lambda expression)を使えば、その場で関数を作ることができます。このコードでは、lambdaでパラメータxを2乗して返す関数を作り、それをsquareに代入しています。
mapにラムダ式を渡す
mapのためにわざわざ関数を定義するのは面倒です。
a = [2, 3, 5]
b = map(lambda x: x * x, a)
c = list(b)
print(c)
ラムダ式を使うと、mapで行いたい処理を直接渡すことができます。
a = [2, 3, 5]
b = map(lambda x: x + 1, a)
c = list(b)
print(c)
2乗ではなく、1足したいならこのようになります。
PRACTICE
演習問題
コードを自分で書いて実行してから、答えと解説を確認しましょう。
問題1
整数を2乗して返す関数を、ラムダ式で作って変数squareに代入してください。square(4)の結果を表示してください。
答えと解説を見る
模範解答
square = lambda x: x * x
print(square(4))
名前を付けて関数を定義する代わりに、その場で関数を作って変数へ代入できます。square(4)の結果は16です。
問題2
ラムダ式をmapへ直接渡し、[1, 4, 7]の各要素に1を足した結果を表示してください。
答えと解説を見る
模範解答
numbers = [1, 4, 7]
result = list(map(lambda x: x + 1, numbers))
print(result)
短い変換処理なら、別に関数を定義せず、その場で関数を作ってmapへ渡せます。結果は[2, 5, 8]です。
問題3
点数55、70、88のすべてに5点を加えた新しいリストを、ラムダ式をmapへ直接渡して作ってください。さらに、変換後の点数をすべて足し、その合計を表示してください。
答えと解説を見る
模範解答
scores = [55, 70, 88]
adjusted = list(map(lambda score: score + 5, scores))
total = 0
for score in adjusted:
total += score
print(total)
mapへ短い変換処理を直接渡してから、これまでに学んだループで合計します。変換後は60、75、93なので、合計は228です。