¿Hay alguna manera de realizar "si" en la lambda de Python? [duplicar]
En Python 2.6 , quiero hacer:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
Claramente esta no es la sintaxis. ¿Es posible realizar una if
entrada lambda
y, de ser así, cómo hacerlo?
Aceptado
La sintaxis que estás buscando:
lambda x: True if x % 2 == 0 else False
Pero no puedes usar print
o raise
en una lambda.
¿Por qué no defines simplemente una función?
def f(x):
if x == 2:
print(x)
else:
raise ValueError
Realmente no hay justificación para utilizar lambda en este caso.
Probablemente la peor línea de Python que he escrito hasta ahora:
f = lambda x: sys.stdout.write(["2\n",][2*(x==2)-2])
Si x == 2 imprimes,
si x != 2 subes.