ラムダ lambda (無名関数の一種)
変数 l にリスト(曜日)を代入していますが、大文字小文字が統一されていませんので、頭文字大文字に統一してみたいと思います。
l = ['Mon', 'tue', 'wed', 'Thu', 'fri', 'Sat', 'sun'] #リストを宣言
def change_words(words, func): #関数change_words 引数 words と 関数オブジェクト
for word in words: #ループ処理
print(func(word)) #func(word) = sample_func(word)
#sample_func「関数オブジェクト」を引数にする
def sample_func(word):
return word.capitalize() #capitalize() 頭文字大文字にして返してくれます
change_words(l, sample_func)
結果は、
Mon
Tue
Wed
Thu
Fri
Sat
Sun
変数 l(エル) にリスト代入します。リスト内の曜日は大文字小文字が統一されていません。
change_words関数の引数はwordsとfuncです。ここでfuncは関数を意味しますが名前は何でも大丈夫です。実はfuncは下に書かれているsample_func(word)を呼び出します。
ループ処理内でwordにリストの個々の要素を代入してfunc(word)つまりsample_func(word)でcapitalize関数を実行します。
lambdaを使ってより簡単に記述する
def sample_func(word):
return word.capitalize()
change_words(l, sample_func)
黄色の関数部分は、下の黄色アンダーライン部分に書き換え可能です。
sample_func = lambda word: word.capitalize()
change_words(l, sample_func)
3行が2行に縮まり、同じ結果が得られます。
更に以下の様に書き換え可能です。
change_words(l,lambda word: word.capitalize())
3行が1行に縮まり、同じ結果が得られます。
簡単なfunctionを引数とするものは、lambdaを使用することにより一行で済みます。
lambdaの使用例:
大文字化capitalize()と小文字化lower()を記入する例
l = [‘Mon’, ‘tue’, ‘wed’, ‘Thu’, ‘fri’, ‘Sat’, ‘sun’]
def change_words(words, func):
for word in words:
print(func(word))
# def sample_func(word):
# return word.capitalize()
# def sample_func2(word):
# return word.lower()
change_words(l,lambda word: word.capitalize())
change_words(l,lambda word: word.lower())
Mon
Tue
Wed
Thu
Fri
Sat
Sun
mon
tue
wed
thu
fri
sat
sun
コメント