In Python 2.6, I want to do:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
This clearly isn't the syntax. Is it possible to perform an if in lambda and if so how to do it?
In Python 2.6, I want to do:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
This clearly isn't the syntax. Is it possible to perform an if in lambda and if so how to do it?
This snippet should help you:
x = lambda age: 'Older' if age > 30 else 'Younger'
print(x(40))
You can also use Logical Operators to have something like a Conditional
func = lambda element: (expression and DoSomething) or DoSomethingIfExpressionIsFalse
You can see more about Logical Operators here
what you need exactly is
def fun():
raise Exception()
f = lambda x:print x if x==2 else fun()
now call the function the way you need
f(2)
f(3)
An easy way to perform an if in lambda is by using list comprehension.
You can't raise an exception in lambda, but this is a way in Python 3.x to do something close to your example:
f = lambda x: print(x) if x==2 else print("exception")
Another example:
return 1 if M otherwise 0
f = lambda x: 1 if x=="M" else 0
Here's the solution if you use Python 3.x!
>>> f = lambda x: print(x) if x == 2 else print("ERROR")
>>> f(23)
ERROR
>>> f(2)
2
>>>
the solution for the given scenerio is:
f = lambda x : x if x == 2 else print("number is not 2")
f(30) # number is not 2
f(2) #2
Following sample code works for me. Not sure if it directly relates to this question, but hope it helps in some other cases.
a = ''.join(map(lambda x: str(x*2) if x%2==0 else "", range(10)))
Hope this will help a little
you can resolve this problem in the following way
f = lambda x: x==2
if f(3):
print("do logic")
else:
print("another logic")