Map() とラムダ関数
これまでに、ラムダ関数を使って短くシンプルな関数を書いたり、単純な機能を持つ関数を再定義したりしてきました。とはいえ、ラムダ関数の真価は、こうした簡単な処理を、より大きな式の中に匿名で埋め込みたいときに発揮されます。つまり、def で定義した関数と違って、その機能自体は環境に保存されません。この考え方を理解するために、ここでは map() 関数の文脈でラムダ関数を使います。
動画で見たように、map() はリストなどのオブジェクトに対して関数を適用します。ここでは、map() がオブジェクトを処理する際に使う関数を、ラムダ関数で定義できます。例えば、次のようになります。
nums = [2, 4, 6, 8, 10]
result = map(lambda a: a ** 2, nums)
この例では、値 a を 2 乗するラムダ関数を、数値のリスト nums と一緒に map() に渡しています。map() の呼び出しから得られる map オブジェクト は result に保存されます。ここからは、map() とあわせてラムダ関数を使う練習をします。この演習では、前の演習で定義した add_bangs() 関数の機能を、文字列のリストに対して適用していきます。
この演習はコースの一部です
Pythonの関数入門
演習の手順
map()の呼び出しで、文字列itemに文字列'!!!'を連結するラムダ関数と、文字列のリストspellsを渡してください。結果のマップオブジェクトをshout_spellsに代入します。shout_spellsをリストに変換し、そのリストを出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create a list of strings: spells
spells = ["protego", "accio", "expecto patronum", "legilimens"]
# Use map() to apply a lambda function over spells: shout_spells
____ = map(____, ____)
# Convert shout_spells to a list: shout_spells_list
____
# Print the result
print(shout_spells_list)