Pythonのラムダは、知っておくと最も便利で、重要で、興味深い機能の1つです。残念ながら、彼らは誤解されやすく、間違ってしまうこともあります。
この記事では、これらの不思議な機能について知っておく必要のあるすべてのこと、それらの使用方法、およびそれらが役立つ理由について説明します。
これらの実際的な例に飛び込む前に、Python仮想環境をセットアップすることをお勧めします。それをしたくない場合は、少なくともこれらの例を試してみてください インタラクティブなオンラインPythonシェルを使用 。
Pythonのラムダとは何ですか?
ラムダは、Pythonで関数を定義するための単なる方法です。これらは「ラムダ演算子」または「ラムダ関数」と呼ばれることもあります。
以前にPythonを使用したことがある場合は、おそらく def キーワード、そしてそれは今のところあなたのためにうまく働いています。では、なぜ同じことをする別の方法があるのでしょうか?
違いは、ラムダ関数が無名であるということです。 つまり、名前を付ける必要のない関数です。これらは、「実際の」関数が大きすぎてかさばる場合に、小さな1回限りの関数を作成するために使用されます。
ラムダは、変数に割り当てることができる関数オブジェクトを返します。ラムダは任意の数の引数を持つことができますが、1つの式しか持つことができません。ラムダ内で他の関数を呼び出すことはできません。
ラムダ関数の最も一般的な使用法は、単純な1行の関数を必要とするコードであり、完全な通常の関数を作成するのはやり過ぎです。これについては、以下の「マップ、フィルター、および削減について」で詳しく説明します。
PythonでLambdaを使用する方法
ラムダ関数を見る前に、「従来の」方法で定義された超基本的な関数を見てみましょう。
def add_five(number):
return number + 5
print(add_five(number=4))
この関数は非常に基本的ですが、ラムダを説明するのに役立ちます。あなたはこれよりも複雑かもしれません。この関数は、を介して渡された任意の数に5を追加します 番号 パラメータ。
ラムダ関数としてどのように見えるかを次に示します。
add_five = lambda number: number + 5
print(add_five(number=4))
使用するのではなく def 、 言葉 ラムダ 使用されている。角かっこは必要ありませんが、 ラムダ キーワードはパラメータとして作成されます。コロンは、パラメーターと式を区切るために使用されます。この場合、式は次のようになります。 数+5 。
を使用する必要はありません 戻る キーワード---ラムダはこれを自動的に行います。
2つの引数を使用してラムダ関数を作成する方法は次のとおりです。
マイクロソフトオフィスを学ぶための最良の方法
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5
print(add_numbers_and_five(number1=4, number2=3))
ラムダのポイントがまだわからない場合は、次のセクションに飛び込んで、光を確認するのに役立ちます。
Map、Filter、Reduceを使用したPythonラムダ
Pythonコアライブラリには、次の3つのメソッドがあります。 地図 、 減らす 、 と フィルター 。これらのメソッドは、ラムダ関数を使用する最良の理由である可能性があります。
NS 地図 関数には、関数とリストの2つの引数が必要です。その関数を受け取り、それをリスト内のすべての要素に適用して、変更された要素のリストをマップオブジェクトとして返します。 NS リスト 関数は、結果のマップオブジェクトを再びリストに変換するために使用されます。
ラムダなしでマップを使用する方法は次のとおりです。
list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5
new_list = list(map(add_five, list1))
print(new_list)
このマップ機能は非常に便利ですが、もっと良いかもしれません。 NS add_five 関数は引数として渡されますが、mapを使用するたびに関数を作成したくない場合はどうでしょうか。代わりにラムダを使用できます!
関数がラムダに置き換えられただけで、同じコードは次のようになります。
ピンタレストでボードをアルファベット順に並べる方法
list1 = [2, 4, 6, 8]
print(list1)
new_list = list(map(lambda x: x + 5, list1))
print(new_list)
ご覧のとおり、全体 add_five 機能は不要になりました。代わりに、ラムダ関数を使用して物事を整理します。
とともに フィルター 機能、プロセスはほとんど同じです。 フィルター 関数を受け取り、それをリスト内のすべての要素に適用し、関数がTrueを返す原因となった要素のみを含む新しいリストを作成しました。
まず、ラムダなし:
numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))
print(new_numbers)
このコードには何の問題もありませんが、少し長くなっています。ラムダが削除できる行数を見てみましょう。
numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)
ラムダ関数は全体の必要性を置き換えました great_than_ten_func !そしてそれは5つの簡単な言葉でそれを成し遂げました。これがラムダが強力な理由です。ラムダは単純なタスクの煩雑さを軽減します。
最後に、見てみましょう 減らす 。 Reduceはもう1つのクールなPython関数です。リスト内のすべてのアイテムにローリング計算を適用します。これを使用して、合計を集計したり、すべての数値を乗算したりできます。
from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b
result = reduce(summer, numbers)
print(result)
この例はインポートする必要があります 減らす から functools モジュールですが、心配しないでください。functoolsモジュールはPythonコアライブラリの一部です。
ストーリーはラムダとほとんど同じで、関数は必要ありません。
from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
result = reduce(lambda a, b: a + b, numbers)
print(result)
PythonLambdasで注意すべき点
これらの例は、Pythonコアライブラリからのラムダ関数が、map、filter、reduceとともにいかに簡単であるかを示しています。それでも、ラムダ関数が役に立たない用途がいくつかあります。
基本的なタスク以外のことをしている場合、または他のメソッドを呼び出したい場合は、通常の関数を使用してください。ラムダは1回限りの匿名関数に最適ですが、式は1つだけである必要があります。ラムダが正規表現のように見え始めたら、おそらく専用のメソッドにリファクタリングするときです。
その他のヒントについては、 Pythonでのオブジェクト指向プログラミングのガイド Python初心者向けのFAQガイドをご覧ください。
共有 共有 つぶやき Eメール メールが本物か偽物かを確認する3つの方法少し疑わしいメールを受け取った場合は、その信頼性を確認することをお勧めします。メールが本物かどうかを判断する3つの方法があります。
次を読む 関連トピック- プログラミング
- Python
- コーディングチュートリアル
Joeは、英国のリンカーン大学でコンピュータサイエンスを卒業しています。彼はプロのソフトウェア開発者であり、ドローンを飛ばしたり音楽を書いたりしていないときは、写真を撮ったりビデオを制作したりしていることがよくあります。
ジョーコバーンのその他の作品ニュースレターを購読する
ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。
購読するにはここをクリックしてください