Pythonのラムダ関数

リストとコールバックをパラメータとして受け取る関数 func があるとします。 この関数は元のリストの要素から新しいリストを作成します。 その際、各要素にコールバックが適用されます:

pythondef func(lst, callback):
  res = []
  
  for el in lst:
    res.append(callback(el))
    
  return res

渡された数値を2乗する関数 square を作成しましょう:

pythondef square(num):
  return num ** 2

数値のリストとコールバックとして関数 square を func のパラメータに渡してみます:

pythonprint( func([1, 2, 3], square) )

数値の2乗で構成される新しいリストがコンソールに出力されます:

python[1, 4, 9]

しかし、このコードは ラムダ関数 を使用することで大幅に短縮できます。 ラムダ関数は lambda キーワードで呼び出される無名関数で、1行で記述されます。 そのため、コードが1行の関数のみをラムダ関数に書き換えることができます。

ラムダ関数の構文は次のようになります:

pythonlambda 関数のパラメータ: パラメータに対する操作

ラムダ関数を使用して関数 square を書き直し、それを func のパラメータに渡してみましょう:

pythonprint( func([1, 2, 3], lambda num: num ** 2) )

ラムダ関数は変数に代入することもできます:

pythonsquare = lambda num: num ** 2
print( func([1, 2, 3], square) )
Задание 1

次のコードをラムダ関数を使って書き直してください:

pythondef func(num, clb):
  return clb(num)

def clb(num):
  return num + 1
  
print( func(2, clb) )
Задание 2

次のコードをラムダ関数を使って書き直してください:

pythondef func(num, clb1, clb2):
  return (clb1(num), clb2(num))

def clb1(num):
  return num + 1
  
def clb2(num):
  return num - 1
  
print( func(2, clb1, clb2) )
Задание 3

次のコードをラムダ関数を使って書き直してください:

pythondef func(num1, num2, clb):
  res = clb(num1) + num2
  return res
  
def clb(num):
  return num ** 3
  
print(func(2, 6, clb))