我覺得這個問題是類似This oneLAMBDA返回內存地址
return(lambda x: "Even" if number % 2 == 0 else "Odd")
賽道我可以解決這樣的問題:
if number % 2 == 0:
return("Even")
else:
return("Odd")
,但我想有一個整齊的一行爲了這。現在我卡住了,我的代碼返回
at 0x7fb0378fb0d0>
我在想什麼?
我覺得這個問題是類似This oneLAMBDA返回內存地址
return(lambda x: "Even" if number % 2 == 0 else "Odd")
賽道我可以解決這樣的問題:
if number % 2 == 0:
return("Even")
else:
return("Odd")
,但我想有一個整齊的一行爲了這。現在我卡住了,我的代碼返回
at 0x7fb0378fb0d0>
我在想什麼?
Lambda返回一個函數,所以你得到函數的地址。
試試這個:
return ((lambda x: "Even" if x % 2 == 0 else "Odd")(2))
在這裏,您執行lambda函數,而不是隻返回函數本身。
您可以lambda函數賦值給一個變量是這樣的:
func = lambda x: "Even" if x % 2 == 0 else "Odd"
然後調用該函數與相關參數:
func(2)
非常有用。謝謝。爲什麼我需要追加參數而不是將其集成到lambda表達式中? –
考慮x作爲傳遞給lambda的參數,誰是那個x?你需要使用該參數調用lambda,在這種情況下它是2。 –
拉姆達回報功能
試試這個
f = lambda (x :"Even" if x % 2 == 0 else "Odd")
print f(2)
希望它有幫助!
你根本不應該使用lambda。只要做到
return 'Even' if number % 2 == 0 else 'Odd'
或
return ('Even', 'Odd')[number % 2]
題外話,但我不會真的把這種「整潔」,你正在傷害你自己的保養(和輕微的性能),沒有真正的好處 – Sayse
'高清˚F (x):如果x%2 == 0則返回「Even」,否則「Odd」'也是1-liner,更具可讀性。我沒有看到這個特定lambda的合理用例。 –
同意上面的註釋,一般不使用lambda,除非你需要匿名函數(例如作爲排序的關鍵) –