5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】if文入りの関数をlambda関数にする

Last updated at Posted at 2020-09-28

#前提
引数に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

完成。

5
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?