簡體   English   中英

Function 組合在 python 中只有 lambda

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM