Pythonでlambda関数(if、else、elif)を使用してみます。
■Python
Google Colaboratory(Google Colab),Python3.7.10
■lambda関数でのif elseの使い方
lambda <引数> : <条件が真であれば値を返す> if <条件> else <条件が偽であれば値を返す>
ラムダ関数でのif elseの構文は上記となります。
■与えられた値が1から10の間にあるかどうかを確認する
lambda関数でのif else文の例として、与えられた値が1から10の間にあるかどうかを確認するスクリプトを書いていきます。
■コード
test= lambda x : True if (x > 1 and x < 10) else False print(test(5)) print(test(11))
今回はtestという変数の中で、lambda関数を使用します。lambda関数の引数を「x」としています。「True if」と記述し、その後に真(True)の時に返す処理を記述します。今回は1から10の間に数値があるかどうかということで、比較演算子(>,<)と、ブール演算子(and)を用いた処理となります。その後に「else」と記述し、False(偽)の時に返す処理を記述します。今回は「False(偽)」と記述します。
最後に、1から10の間にあるかどうかを確認するために、testという変数に値を渡すために、括弧内に値を入れます。返された値をprint関数で出力します。
■実行
このスクリプトを実行してみます。実行してみると、今回渡した値が1から10の間にあるかどうかが確認され、結果としてそれぞれの値が返されました。
■if else なしで条件付きlambda関数を作成する
では、次にif else文を使わないで条件付きラムダ関数を作成してみます。作成するものは、与えられた値が1から10の間にあるかどうかを確認できるものです。
■コード
test =lambda x : x > 1 and x < 10 print(test(5)) print(test(11))
testという変数の中で、lambda関数を使用します。lambda関数の引数を「x」としています。その後に、今回の場合は真(True)の時に返す処理を記述します。1から10の間に数値があるかどうかを比較演算子(>,<)と、ブール演算子(and)を用いた処理になります。これだけ記述すればOKです。False(偽)の時に返す処理は記述しなくてもよいです。lambda関数でのif else文の使用と比べるとコードが短くて済みました。
■実行
このスクリプトを実行してみます。実行してみると、渡した値が1から10の間にあるかどうかが確認され、結果としてそれぞれの値が返されました。今回はFalse(偽)の時に返す処理は記述していませんが、自動的にFalse(偽)の場合は、「False(偽)」と出力されることが確認できました。
■条件付きlambda関数(if else文)でfilter()関数の使用する
次に条件付きlambda関数(if else文)でfilter()関数の使用してみます。filter()関数は、リスト型の中から条件に該当するものだけを取り出すことができます。今回はfilter()関数と条件付きラムダ関数(if else文)を使用し、数値を渡すことで、特定の数字をフィルタリングしてみます。
■コード
list_number = [55,49,1,5,8,34,56,11,19,15] list_number = list(filter(lambda x : x > 0 and x < 10, list_number))