私はPythonプログラマーとして始めたばかりです。Python の課題に取り組んでいる間、自分で解決した後に他の人の解決策を見ることで、言語について多くのことを学びます。
いたるところにラムダ関数が見られます。それらは簡単に見えますが、少し読みにくくなります (少なくとも今の私にとっては)。
ラムダ関数を他のものよりも使用する価値はありますか? 学習曲線の早い段階で学ぶ価値があるかどうか知りたいです!
私はPythonプログラマーとして始めたばかりです。Python の課題に取り組んでいる間、自分で解決した後に他の人の解決策を見ることで、言語について多くのことを学びます。
いたるところにラムダ関数が見られます。それらは簡単に見えますが、少し読みにくくなります (少なくとも今の私にとっては)。
ラムダ関数を他のものよりも使用する価値はありますか? 学習曲線の早い段階で学ぶ価値があるかどうか知りたいです!
必要な場合はラムダを使用し、より適切な場合はリスト内包表記、ジェネレーター式などを使用します。
ラムダは、複数回、または一種のコールバックとして使用できる 1 つの式関数です。単一の値だけでなく、複雑な値も生成できます。
リスト内包表記は、一度評価してから、必要に応じて使用するものです。生成された値のリストを取得し、それを利用します。
ジェネレーター式 (ここに当てはまるのでこれについて言及します) は、作成してから一度だけ使用するジェネレーター (反復可能) です: ループ内、別のジェネレーター式内、リスト内包表記内、または返すためにさえ使用します。
次のように、これらのものを組み合わせることもできます。
f = lambda n: [i for i in range(n, 2*n)]
g = (i * 2 for i in f(10))
l = [i * i for i in g]
ll = lambda n: [i * i * 2 for i in f(n)]
ラムダは、必要な場合、コードをより簡潔にするが明確さを失わない場合などに使用されます。それらは、リスト内包表記 (またはその他の内包表記) と実際には競合していません。Python で読みにくいものを見つけた場合は、より読みやすいものに変更する必要があります。
全体として、ラムダ計算は非常にクールなものです。これらの概念は、より幅広い思考を可能にするため、できるだけ早くこれらの概念に慣れる必要があります。まず、読むことをお勧めします
http://www.secnetix.de/olli/Python/lambda_functions.hawk
Lambda 関数は、生成されるコードが少なく、読みやすく (慣れている場合)、ワンライナーであるため、リスト内包表記を支持してよく使用されます。
他の何かよりも Lamba 関数を使用する価値はありますか?
非常に短い関数を作成したいが、実際には名前を付けたくない場合があります。たとえば、関数のコールバックによく使用します。
some_system.add_modifier(lambda x, y, z: return (x*2, y*2, z*2))
他のコメントが示唆したように、実際にはどちらかを選択する問題ではなく、言語の主要なメカニズムのいくつかを学ぶだけです。もちろん、その機能を常に使用しなければならないという意味ではありませんが、知っておくとよいでしょう。
学習曲線の早い段階で学ぶ価値があるかどうか知りたいです!
私はそれについて学ぶと思いますが、快適に感じる場所で使用してください。プログラマーが学んだ新しい機能に夢中になることはよくあることです。:)