在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,如果是这样,如何做到呢?
在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,如果是这样,如何做到呢?
当前回答
这段代码应该可以帮助您:
x = lambda age: 'Older' if age > 30 else 'Younger'
print(x(40))
其他回答
你要找的语法:
lambda x: True if x % 2 == 0 else False
但是你不能在lambda中使用print或raise。
给定场景的解决方案是:
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,你提高。
在lambda中执行if的一个简单方法是使用列表推导式。
你不能在lambda中引发异常,但这是Python 3中的一种方式。X来做一些接近你的例子的事情:
f = lambda x: print(x) if x==2 else print("exception")
另一个例子:
如果M为0则返回1
f = lambda x: 1 if x=="M" else 0
下面的示例代码适用于我。不确定它是否与这个问题直接相关,但希望它在其他情况下有所帮助。
a = ''.join(map(lambda x: str(x*2) if x%2==0 else "", range(10)))