在Python的lambda中如何使用“if”?

511 投票
16 回答
836396 浏览
提问于 2025-04-15 15:09

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表达式里,你不能使用 printraise

撰写回答