始める無料で始める

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)
コードを編集して実行