python lambda(無名関数)とリスト内包表記の違い




 

リスト内包表記とかlambda式(無名関数)とか書き方たくさんあるけど、どちらがいいんだろうと思ってたので、調べてみました。

なお今回表示させる関数は以下の関数。「ニュートンの蛇形」と言われています。
\begin{eqnarray}
y = \frac{x}{x^2+1}
\end{eqnarray}

 

リスト内包表記

 

 

計算範囲は-1000〜1000ですが、関数に代入する値は0.01をかけた-10〜10です。

実行すると

lambda式(無名関数)

 

無名関数とは「その場限りの関数」です。なので、定義された関数や計算結果を引き継いだりはしません。使い所は難しいですが、慣れればフレキシブルにプログラムをかけるようになると思います。

 

先ほど同様-1000〜1000が計算範囲ですが、実際に関数に代入される値は-10〜10です。


 

比較すると、リスト内包表記は1行、lambda式は6行です。単純にグラフ作成する程度なら「わざわざforループを作って無名関数を使うほどでもない」とういことですね。

あらかじめ他にfor文が上にあり、そのfor文のループ範囲と計算したい関数の計算範囲が一緒なら、無名関数を用意するだけですが、それでもその計算結果を格納するための配列を用意するということを考えれば、やはり「リスト内包表記」が最強な気がする。

for文処理をしない積分計算ならlambda式はかなり威力を発揮しそうですね。

 



記事が役に立ったらシェア!

投稿者:

中村 俊

中村 俊

1993/09/04生まれ。機械系大学院を休学し、ベンチャーでインターンしている最中。直近では、デカルトの「方法序説」に感銘を受けた。 趣味:読書、web開発の勉強、異分野の論文読んだり、記事書いたり。 最終的には経営者か研究者になりたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA