2016-09-23 53 views
0

下面這段代碼提供了錯誤,同時呼籲嵌套lambda表達式,類型錯誤:不支持的操作數類型(S)爲+:「詮釋」和「功能」

a = lambda x : x +(lambda y : y * 30) 

--call 
a(1) 

Traceback (most recent call last): 
    File "<pyshell#334>", line 1, in <module> 
    a(1) 
    File "<pyshell#330>", line 1, in <lambda> 
    a = lambda x : x +(lambda y : y * 30) 
TypeError: unsupported operand type(s) for +: 'int' and 'function' 

有沒有辦法實現這個使用嵌套拉姆達

+0

你想在地球上實現什麼?你期待什麼輸出?所寫的代碼是無稽之談,所以你需要指出預期的行爲;我們無法猜測這裏的編譯器。 – ShadowRanger

+0

所以你想做'(x,y) - > x +(y * 30)'? – Li357

+0

不能做你想做的事情的代碼往往是解釋你想做什麼的極其糟糕的方法。我希望我能夠正確地猜測你的意圖。 – tripleee

回答

1

有點折磨,像這樣?

a = lambda x: 1 + (lambda y: y*30)(x) 

如果你創建和命名lambda ylambda x,它有點清潔,但我猜你會說這就是作弊。

f = lambda y: y*30 
a = lambda x: x + f(x) 
+0

或者,如果他們想用兩個參數調用,就像這樣:'a = lambda x,y:x +(lambda y:y * 30)(y)'。然後調用像'a(x,y)'? – Li357

+0

OP的例子顯示只傳遞一個參數,所以我想這也會傳遞給'lambda y',但我們顯然都在猜測。感謝你的榜樣;我非常感謝這個簡化了我的工作。 – tripleee

相關問題