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


当前回答

你要找的语法:

lambda x: True if x % 2 == 0 else False

但是你不能在lambda中使用print或raise。

其他回答

你要找的语法:

lambda x: True if x % 2 == 0 else False

但是你不能在lambda中使用print或raise。

可能值得考虑np.where

Python中的Lambdas在允许使用的方面有相当大的限制。具体来说,你不能在它们的主体中有任何关键字(除了像and, not, or等操作符)。

所以,你不可能在你的例子中使用lambda(因为你不能使用raise),但如果你愿意让步的话,你可以使用:

f = lambda x: x == 2 and x or None

注意,你可以使用其他几个…你的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)))