在Python的lambda中如何使用“if”?
在Python 2.6中,我想要这样做:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
这显然不是正确的写法。那么在lambda
中能不能使用if
,如果可以的话,应该怎么做呢?
16 个回答
43
我写过的最糟糕的 Python 代码大概就是这一行:
f = lambda x: sys.stdout.write(["2\n",][2*(x==2)-2])
如果 x 等于 2,就打印;
如果 x 不等于 2,就抛出错误。
48
你为什么不直接定义一个函数呢?
def f(x):
if x == 2:
print(x)
else:
raise ValueError
在这种情况下,使用lambda函数其实没有什么理由。
890
你需要的语法是:
lambda x: True if x % 2 == 0 else False
不过,在一个lambda表达式里,你不能使用 print
或 raise
。