¿Hay alguna manera de realizar "si" en la lambda de Python? [duplicar]

Resuelto Guy asked hace 14 años • 16 respuestas

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 ifentrada lambday, de ser así, cómo hacerlo?

Guy avatar Oct 18 '09 23:10 Guy
Aceptado

La sintaxis que estás buscando:

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

Pero no puedes usar printo raiseen una lambda.

Robert Rossney avatar Oct 18 '2009 16:10 Robert Rossney

¿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.

SilentGhost avatar Oct 18 '2009 16:10 SilentGhost

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.

jimifiki avatar Oct 21 '2015 05:10 jimifiki