[英]Function composition with just lambdas in python
有沒有辦法在 python 中的 lambda 一行中執行以下操作?
squared = lambda x : x**2
cubed = lambda x : x**3
squareCubed = lambda x : squared(cubed(x))
不使用任何輔助函數或減少。
print(squareCubed(2)) # > 64
當然,您可以執行以下操作:
squareCube = (lambda f, g: lambda x: f(g(x)))(lambda x: x**2, lambda x: x**3)
但為什么要這樣做?
在任何情況下,如果您遵循官方 PEP8 樣式指南, lambda
的結果分配給變量。 出什么問題了:
def square(x):
return x**2
def cube(x):
return x**3
def compose(f, g):
return lambda x: f(g(x))
square_cube = compose(square, cube)
更具可讀性。
squareCubed = lambda x : (x**3)**2
print(squareCubed(2)) # gives 64
如果您想對其進行硬編碼:
squareCube = lambda x: (x**3)**2
但一般來說:
compose = lambda f, g: lambda x: f(g(x))
squareCube = compose(lambda x: x**2, lambda x: x**3)
或者,在一行中:
squareCube = (lambda f, g: lambda x: f(g(x)))(lambda x: x**2, lambda x: x**3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.