お帰りなさい｡
私が本当に本当に大好きな､ ラムダ式と呼ばれるものについてお話ししましょう｡
ラムダはコンピュータサイエンスの用語で､ 関数型プログラミングの考え方と相通じるものがあります｡
Pythonのラムダ式は､ 一度だけ使う匿名関数で､ 何度も使う必要はないんだ｡
どういう意味ですか？
ラムダ式は､ 一度しか使わない関数に使うととても便利なんだ｡
関数を定義すると､ その関数を何度も使うことができ､ コードのコピー＆ペーストの手間が省けるので便利だという話をしましたね｡
ラムダ関数というのは､ ある関数を一度だけ使うような場合に使うものです｡
そして､ 2つ目は､ 匿名関数であることです｡
それは､ 一度しか使わないからです｡
つまり､ 私たちのマシンのどこにも保存する必要がないのですから､ 名前をつける必要はないのです｡
一度使ってみたいんです｡
走らせるだけで､ もういいんです｡
捨ててしまえばいいのです｡
では､ ラムダ関数とはどのようなものなのでしょうか｡
ラムダ関数は次のようなものです｡
Pythonではlambdaと言います｡
ここでちょっとだけ､ 見えるようにスペースを追加しておきますね｡
Lambdaと言い､ 青くハイライトされているのがわかると思います｡
そして､ この関数が取得するパラメータと､ コロン､ そしてここにある関数のようなものを言ってみます｡
そして､ パラメータ｡
あるいは､ 機能の代わりに､ ある種の操作をすることになるのです｡
そこで､ 取りたい行動を言ってみましょう｡
パラメータで
さて､ まだ分かりにくいので､ 実際に作成した関数に実装してみましょう｡
だから､ multiply by 2は一度しか使わないものだとしよう｡
2倍しかかけたくない｡
それが私のリストで､ あとはもういいんです｡
メモリに保存する必要はないんです｡
これは単なる追加コードです｡
これは必要ない｡
どうすればいいのか？
さて､ ここでmap関数に戻り､ それをリストに変換してみましょう｡
そして今は､ これらを最小限に抑えることにしています｡
そこで､ 2倍することだけに注目します｡
そしてここで､ 2の掛け算に戻りましょう｡
以前はどうだったかを思い出してください｡
マイリストで､ 3つ目のパラメータはそのままでは必要ないのです｡
ラムダ関数を使えば､ 「新しい関数を作る必要はない､ 使うのは一度だけでいい」と言える｡
これを完全に削除してしまおう｡
そして､ multiply by twoを使う代わりに､ lambdaと言うことにします｡
そして､ ここではパラメータをあげてみます｡
どのようなパラメータを受け取ることができるのでしょうか？
さて､ 私のリストから一品目を受け取ることになりました｡
そして､ この中で､ マイリストに何をするか？
まあ､ 2倍したいんですけどね｡
わかりました｡
これは使えるか？
やってみよう
私は走ります｡
おっと
見たか？
2倍も使ってないのに｡
実のところ､ 削除すればいいだけなのですが｡
そして､ 「実行」をクリックしても､ すべてうまくいくのです｡
今すぐ
これはなぜでしょうか｡
ラムダ式は､ 1回限りの匿名関数であることを忘れないでください｡
この機能には名前がついていないんです｡
これが､ この機能です｡
何度も走らなくていいということ｡
だから､ インタプリタがこの行を実行したら､ これを記憶することはないんだ｡
ただ､ 忘れてしまうのです｡
しかし､ 私たちに代わってアクションを実行します｡
この例では､ ラムダ式を作りたいと言っています｡
リストの中から1項目を選びます｡
そして､ その項目を2倍すると､ これがまた自動的に返ってくるんです｡
その時の順番がlambda thenなんです｡
乳母車､ コリン､ そして私たちの望むアクションを与えるのです｡
私たちの場合は､ 乳母車になりますね｡
そして､ やりたいアクションは何でもいい｡
ようなものです｡
つまり､ 私たちの場合､ アイテム×2､ これが自動的に返ってくるわけです｡
なんてかっこいいんでしょう｡
これはPythonの非常に優れた機能で､ コードを美しく保ち､ これらの関数でごちゃごちゃさせないようにするためです｡
また､ 他の言語にはラムダがないかもしれませんが､ 無名関数と呼ばれることもあります｡
また､ なぜ匿名なのかは､ これまで述べてきたとおりです｡
通常の機能と同じで､ 挙動も同じです｡
でも､ 一回しか使わないし､ 名前もないんです｡
でも､ これで少しはすっきりしたのがおわかりいただけると思います｡
今､ ラムダ関数でフィルタを行おうとするとどうなるか｡
まあ､ なんならビデオを一時停止して､ 自分でやってみてもいいんですけどね｡
でも､ かなり簡単なはずですよね？
フィルターをかけると
できますよ､ ラムダさん｡
アイテム､ そしてアイテム｡
これをコピーすればいいんです｡
そこで､ この項目に対して取りたいアクションはこうです｡
そして､ それを実行すると
もう一度｡
効くんです｡
なんて素敵なんでしょう｡
この機能も不要になりました｡
とても､ 素敵です｡
リデュースについてはどうでしょうか｡
lambdaでreduceは使えるか？
もちろんです｡
なぜダメなのか？
ここでは､ 減らすとしましょう｡
ここでは､ 単一の値を生成するだけなので､ リストを削除することにします｡
ラムダと言うことになりますね｡
Item remember reduce はパラメータにアキュムレータを､ そしてアイテムを受け取る｡
だから､ このように2つのパラメータを与えて､ 何をしたいのか､ と言えばいいのです｡
まあ､ 項目でアキュムレータを追加したいだけなんですけどね｡
このようにリストを作成し､ 「実行」をクリックします｡
確認してみてください｡
それも効果的です｡
なんてかっこいいんでしょう｡
繰り返しになりますが､ もうアキュムレータは必要ありませんし､ 1行の関数を実行するだけで､
すぐにリストを縮小することができます｡
とても､ かっこいいです｡
特に理解する部分では､ ラムダをもう少し掘り下げていく予定です｡
もし､ まだ100％理解していなくても､ 心配しないでください｡ このコースの後半で､ 使用例やなぜそれが便利なのかをもっと詳しく説明します｡
でも､ ラムダ式は本当に､ コードを本当に小さくしてくれるから好きなんだ｡
ただし､ コードの可読性は少し落ちます｡
つまり､ ラムダ式は非常に賢いけれども､ 他の人を混乱させるコードになってしまうというトレードオフの関係にあるのです｡
だから､ 気をつけたいものです｡
とりあえず､ これで終わりです｡
次の動画でお会いしましょう｡
バイバイ｡