簡體   English   中英

如何閱讀和分解 python 中復雜的 lambda 方程

[英]How to read and break down complex lambda equations in python

下面這個問題來自過去一年的 NUS 試卷,我不知道如何解決這個問題 go; 你如何分解 lambda 部分並找出哪個括號是哪個 lambda 變量? 我無法追蹤代碼以獲取 120

def combinator(y):
    return (lambda x: lambda y: x(y))(lambda x:y)
combinator(lambda x:x*10)(11)(12)

我試過谷歌,但 lambda 教程大多是基礎的,所以我不確定如何閱讀和分解更復雜的 lambda 代碼和高階函數

function 是

def combinator(y):
    return (lambda x: lambda y: x(y))(lambda x:y)
combinator(lambda x:x*10)(11)(12)

讓我們嘗試簡化 function。首先,請注意,您可以將符號更改為 function。例如, lambda x: x可以更改為lambda z: z

由於有很多xy ,我們將更改符號以減少混淆。

def combinator(y):
    return (lambda w: lambda z: w(z))(lambda x:y)
combinator(lambda x:x*10)(11)(12)

我們試着把function定義為數學上的function,這樣更容易理解。 讓我們設置
f表示lambda x:x*10 ,所以f(x) = x*10
g代表lambda x:y ,所以g(x) = y
h代表lambda z:w(z) ,所以h(z) = w(z) => h = w
k代表lambda w: lambda z: w(z) , 所以k(w) = h = w

定義數學 function 后,您可以將它們代回 function。

combinator(y)
= (lambda w: lambda z: w(z))(lambda x:y)  
= k(g)
= g

因此,我們知道combinator(y) = g

combinator(y)(x) = g(x) = y
combinator(y)(x)(z) = y(z)

所以

combinator(lambda x:x*10)(11)(12)
= combinator(f)(11)(12)
= f(12)
= 12*10
= 120

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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