Python Lambda関数入門:便利な書き方と使い方

Lambda関数は、Pythonの関数の一種で、簡単に関数を定義することができます。

主に高階関数や無名関数として使われ、プログラムの可読性を高めることができるだけでなく、リストや配列の処理など、簡潔に処理を記述することができます。

Pythonの基本的な機能の1つであり、コードをよりスマートにするために活用されます。

できること

  • 簡潔で明確なコードの記述が可能になる。
  • 高階関数を簡単に作成することができる。
  • プログラムの可読性を高めることができる。
  • 関数を定義するために、def文を使う必要がなくなる。

spyderの使い方が分からない方や、エラーが出る方は下のボタンをクリックしてください。

spyderの使い方(ファイル作成・プログラム実行など)が分からない方はクリック

spiderのインストールがまだの方

「Anaconda Powershell Prompt」や「spyder」が分からない方は「Anacondaをインストール|pythonが動く環境を構築しよう」をご覧ください。

新しいファイルを作成する

画面上部のツールバーの中の「用紙」のようなアイコンをクリックすると作成できます。

ショートカットキー Ctrl+N でも作成することが可能です。

プログラムを全部実行する

画面上部のツールバーの中の「再生ボタン」のようなアイコンをクリックするとプログラムが動きます。書いてあるプログラムを全て実行します。

ショートカットキー F5 でも実行することが可能です。

プログラムを一部実行する

画面上部のツールバーの中の「カーソル」のようなアイコンをクリックすると、カーソルを置いている行のプログラムだけが実行されます。何行かを範囲選択している場合は、選択している行のプログラムだけが実行されます。

ショートカットキー F9 でも実行することが可能です。

ModuleNotFoundError が出る方はクリック

「ライブラリがインストールされてないですよ」というエラー文です。ライブラリをインストールして解消しましょう。インストールはとても簡単です。「Anaconda Powershell Prompt」を新たに立ち上げ、適切なコマンドを貼り付けてエンターを押すだけです。

ModuleNotFoundErrorに続く文字によって、コマンドが異なりますので、エラー文をよく見て適切なコマンドを貼り付けてください。

ModuleNotFoundError: No module named 'webdriver_manager'

pip install webdriver-manager

「Anaconda Powershell Prompt」を新しく立ち上げます。そこに上記コードをコピーしてエンターを押します。必要なライブラリが自動でインストールされるので、終わるまで待ちます。

ModuleNotFoundError: No module named 'selenium'

pip install selenium

「Anaconda Powershell Prompt」を新しく立ち上げます。そこに上記コードをコピーしてエンターを押します。必要なライブラリが自動でインストールされるので、終わるまで待ちます。

読み終わりまで
短い
10分
以内
20分位
30分位
40分位
60分
以上
長い

Lambda関数とは

Lambda関数は、Pythonの関数の一種で、短く簡潔な式で関数を定義することができます。通常の関数と比較すると、定義が簡単であり、関数を作成する手間が省けるため、コードの書き方をスマートにすることができます。

通常のdef文との違いをまとめました。

  • Lambda関数は、簡潔で直感的な構文を持ち、1回限りの使用に適しています。一方、def文を使う場合は、より複雑な機能を実装することができ、再利用性が高くなります。
  • Lambda関数は、名前を持たず、変数に代入する必要があります。一方、def文を使う場合は、関数に名前を付けることができます。
  • Lambda関数は、1つの式で構成され、評価結果がそのまま戻り値として返されます。一方、def文を使う場合は、return文を使って戻り値を明示的に指定する必要があります。
  • Lambda関数は、引数に名前を付けることができません。代わりに、式をカンマで区切って複数の引数を指定する必要があります。一方、def文を使う場合は、引数に名前を付けることができます。
  • Lambda関数は、コードのブロック内で新しい変数を宣言できません。代わりに、変数を外側から取得する必要があります。一方、def文を使う場合は、ローカルスコープを作成し、その中で変数を宣言できます。

単純なlambda関数

一番シンプルなlambda関数をご紹介します。

# 引数xを2乗する単純なlambda関数
f = lambda x: x**2
print(f(5))  # 結果は25

#defで定義すると以下のようになります
def squared(x):
    return x ** 2

print(squared(5))  # 結果は25

このコードは、引数xを2乗する単純なLambda関数を定義しています。

変数fにLambda関数を代入し、f(5)という引数5を与えた結果として25が出力されます。

関数オブジェクトを変数に代入することができるため、プログラムの可読性を高めることができます。

複数の引数を持つlambda関数

これらのメソッドは、グループ単位での集計処理を行います。たとえば、以下のように使用することができます。

# 2つの引数を持つlambda関数
f = lambda x, y: x + y
print(f(3, 5))  # 結果は8

#defで定義すると以下のようになります
def add(x, y):
    return x + y

print(add(3, 5))  # 結果は8


このコードは、2つの引数を持つLambda関数を定義しています。

変数fにLambda関数を代入し、f(3, 5)という引数3と5を与えた結果として8が出力されます。

このように、Lambda関数は、複数の引数を指定することができます。

lambda関数を高階関数で使用する

# 高階関数でlambda関数を使用する
def apply_func(func, x):
    return func(x)

f = lambda x: x**2
result = apply_func(f, 5)
print(result)  # 結果は25

このコードは、Lambda関数を高階関数に渡す例です。

apply_func関数は、関数と引数を受け取り、関数を引数に適用して結果を返します。

Lambda関数fを定義し、それをapply_func関数に渡して、fを引数に適用することができます。fは、引数の値を2乗して返す関数です。apply_func関数を呼び出すことで、fが5に適用され、25が返されます。

高階関数とは

高階関数とは、他の関数を引数として受け取るか、戻り値として関数を返すような関数のことを指します。つまり、関数を引数や戻り値として扱うことができる関数です。高階関数を使用することで、コードの重複を減らしたり、柔軟な関数を作成したりすることができます。例えば、map()filter()などの組み込み関数は高階関数の例です。

lambda関数をfilter()関数で使用する

# filter()関数でlambda関数を使用する
lst = [1, 2, 3, 4, 5]
filtered_lst = list(filter(lambda x: x > 3, lst))
print(filtered_lst)  # 結果は[4, 5]

このコードは、filter()関数でLambda関数を使用する例です。

filter()関数に渡す引数として、Lambda関数を使用します。ここでは、lstリスト内で、値が3より大きい要素を抽出するLambda関数を作成しています。

filter()関数にLambda関数を渡すことで、指定された条件に合う要素だけが含まれる新しいリストが作成され、結果は、[4, 5]となります。

Lambda関数を使うことで、フィルタリングの条件を簡潔かつ柔軟に指定することができます。

filter()関数は、リストなどのイテラブルオブジェクトから、指定された条件に合う要素をフィルタリングして、新しいイテラブルオブジェクトを返します。

filter()関数とは

filter()関数は、リストやタプルなどのイテラブルオブジェクトから、指定された条件に合う要素だけを抽出し、新しいイテラブルオブジェクトを返します。filter()関数は、以下の構文を持ちます。

filter(function, iterable)

第1引数には、条件判定に使用する関数を指定します。第2引数には、条件判定を行う対象となるイテラブルオブジェクトを指定します。filter()関数は、第2引数に指定されたイテラブルオブジェクトの要素を順番に第1引数の関数に渡し、その関数の戻り値がTrueであった要素だけを含む新しいイテラブルオブジェクトを返します。

lambda関数をmap()関数で使用する

# map()関数でlambda関数を使用する
lst = [1, 2, 3, 4, 5]
mapped_lst = list(map(lambda x: x**2, lst))
print(mapped_lst)  # 結果は[1, 4, 9, 16, 25]

このコードでは、リストlstの各要素を2乗した結果を、map()関数を使ってリストmapped_lstに格納しています。

map()関数は、第1引数に適用したい関数、第2引数に適用したいシーケンスを取ります。ここでは、第1引数にlambda x: x**2という、引数を2乗する単純な関数を与えています。

map()関数は、第2引数に与えたシーケンスの各要素に対して、第1引数で与えた関数を適用し、新たなシーケンスを返します。

最後に、list()関数を使って新たなシーケンスをリストに変換しています。結果として、リストmapped_lstには[1, 4, 9, 16, 25]という2乗した結果が格納されます。

map()関数とは

map()関数は、第1引数に指定した関数を、第2引数に指定したイテラブルの各要素に適用し、新たなイテラブルを返す関数です。具体的には、第1引数に指定した関数が各要素に適用され、その結果が新たなイテラブルとして返されます。例えば、第2引数にリストを指定し、第1引数にlambda関数を指定すると、リストの各要素にlambda関数が適用され、新たなリストが返されます。

まとめ

いかがでしたでしょうか。Lambda関数はPythonの無名関数であり、一時的に使用するための関数です。

Lambda関数は単一の式で定義されるため、def文を使用して通常の関数を定義するよりも簡潔で、直接コード内に埋め込んで使用することができます。

ひとり親家庭・働く女性支援!MamaEduプロジェクト!

ひとり親家庭の方々に向けた、Webスキルを身に着けることができる「インターネット・アカデミー」をご紹介します。インターネット・アカデミーは、1995年に開校した日本初のWeb専門スクールで、Webデザイン、Webマーケティング、プログラミング、動画編集など、現場で活躍できるIT人材の育成を行っています。3万人以上の卒業生が活躍しており、2022年にはTBSテレビ「news23」のSDGs特集でも紹介されるなど、注目を集めています。

特に、ひとり親向けの給付金制度を活用した場合、最大で193万円受給しながら勉強ができるという大変お得なシステムがあります。Webデザイン、Webマーケティング、プログラミングなど、15コース以上の給付金対象のコースがあり、国の給付金を活用して学べる点が魅力です。また、キャリアプロデューサーによる就職支援や、女性向けの「mamaeduプロジェクト」など、ひとり親家庭の方々をサポートする取り組みも充実しています。

Webスキルを身に着けることによって、将来的には自分自身のキャリアアップにもつながりますし、求人市場でも高い需要があります。是非、インターネット・アカデミーを通じて、新しいスキルを身に着け、将来の夢を実現してみてはいかがでしょうか。

<strong>しゃちく</strong><span data-color="#7bdcb5" style="background: linear-gradient(transparent 60%,rgba(123, 220, 181, 0.7) 0);" class="vk_highlighter"><br></span>
しゃちく

福岡の中小企業で、社内SEとして勤務。
主な業務は、通販の運営、自社飲食店のハンディやレジの設定、PCトラブル対応、LP作成、HP更新など。
Pythonで業務自動化ツールを100個以上自作した経験をもとに、ツールを作る方法をメインにブログを更新している。
このブログが、誰かのお役に立てば幸いです!

投稿





コメントを残す

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