LAMBDA返回内存地址
问题描述:
我觉得这个问题是类似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)
+0
非常有用。谢谢。为什么我需要追加参数而不是将其集成到lambda表达式中? –
+0
考虑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,除非你需要匿名函数(例如作为排序的关键) –