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)) print(list_number)
今回はlist_numberという変数の中にリストを作成します。作成したリストの中に要素として数値を格納します。
格納後、list_numberという変数で、lambda関数を使用します。lambda関数の引数を「x」とします。その後で今回は、0から10の間に数値があるかどうかという条件を比較演算子(>,<)と、ブール演算子(and)を用いて記述します。記述した後に、条件を適応するlist_number変数を渡します。さらにfilter()関数でリスト型の中から条件に該当する数値だけを取り出します。取り出した後に、list()関数を使用し、リスト(配列)を初期化し、初期化したリストの中に条件に該当する数値だけを入れます。
入れた後に、条件に該当する数値だけが入ったリストを、print()関数で出力します。
■実行
このスクリプトを実行してみます。実行してみると、今回用意したlist_number変数内のリストで、0から10の間にあるかどうかが確認。確認後、0から10までの要素が取り出されて、初期化されたリストに格納。格納後、出力されることを確認できました。
■lambda関数でのif、elif、elseの使い方
lambda <引数> : <戻り値> if <条件 > ( <戻り値> if <条件> else <戻り値>)
次にlambda関数でのif、elif、elseの使い方についてですが、まずlambda関数でのif、elif、elseの構文は上記となります。
■lambda関数(if、elif、else)を使用する
では、lambda関数(if、elif、else)を使用してみます。
■コード
convert = lambda x : x*5 if x < 10 else (x*10 if x < 20 else x) print(convert(5)) print(convert(15)) print(convert(25))
convertという変数の中で、lambda関数を使用します。lambda関数の引数を「x」としています。その後に条件を記述します。値が10未満であれば、5倍して返します。else(10未満以外,一致しない場合) 10から20の間であれば、10を掛けて返します。else(それ以外の場合)は、渡された値と同じものを返すという条件。
条件を指定後、testという変数に値を渡すために、括弧内に値を入れます。返された値をprint関数で出力します。
■実行
このスクリプトを実行してみます。実行してみると、今回指定した条件に該当する場合としない場合でそれぞれの値が返され、print()関数で出力させることができました。
コメント