在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,如果是这样,如何做到呢?


当前回答

您还可以使用逻辑运算符来拥有类似条件的东西

func = lambda element: (expression and DoSomething) or DoSomethingIfExpressionIsFalse

你可以在这里看到更多关于逻辑运算符的信息

其他回答

注意,你可以使用其他几个…你的lambda定义中的If语句:

f = lambda x: 1 if x>0 else 0 if x ==0 else -1

下面的示例代码适用于我。不确定它是否与这个问题直接相关,但希望它在其他情况下有所帮助。

a = ''.join(map(lambda x: str(x*2) if x%2==0 else "", range(10)))

为什么不直接定义一个函数呢?

def f(x):
    if x == 2:
        print(x)
    else:
        raise ValueError

在这种情况下,确实没有理由使用lambda。

给定场景的解决方案是:

f = lambda x : x if x == 2 else print("number is not 2")
f(30)  # number is not 2
f(2)   #2

这可能是我迄今为止写过的最差的python语句:

f = lambda x: sys.stdout.write(["2\n",][2*(x==2)-2])

如果x == 2输出,

如果x != 2,你提高。