#前提
引数に0が来たら「hoge」を返し
それ以外が来たら、入力値を返すだけの関数。
下に細かい手順も書きました。
よく迷うため、備忘録的に。
#結論
def x(value):
if value == 0:
return "hoge"
else:
return value
これが
y = lambda value : "hoge" if value == 0 else value
こうなる。
文字で表すとこう。
(関数名) = lambda (引数) : (条件がTrueなら返す値) if (条件) else (条件がFalseなら返す値)
なんだ...これは...
#手順
lambda関数は
変更したい関数が1行の関数である必要があるため、
まず下記のif文を1行にする。
# 再記
def x(value):
if value == 0:
return "hoge"
else:
return value
###①まずTrueになる条件を記述。(if value == 0)
def x(value):
if value == 0
###②Trueになったら返したい値を【先頭】に書く。("hoge")
def x(value):
"hoge" if value == 0
###③Falseのときに返す値を入れる(else value)
def x(value):
"hoge" if value == 0 else value
これでif文を1文にすることが成功しました。
次に、関数を一行にします。
###④いらない部分を消す。
↓いらない3つのもの
1, def
2, 関数名→ x
3, 引数を囲っているカッコ→()
value :
"hoge" if value == 0 else value
行を揃えると
value : "hoge" if value == 0 else value
こう出来ます。だんだん近づいて来ました。
###⑤先頭に「lambda」と書き
lambda関数にしていきます。
先頭にlambdaを書き
lambda value : "hoge" if value == 0 else value
###⑥値に代入する。(x)
xに代入する。(xは関数名になります)
x = lambda value : "hoge" if value == 0 else value
これで完成です。
###実行
x(0)
>>> 'hoge'
x(100)
>>> 100
完成。