functions aws python lambda inline-if

functions - python lambda aws



Python lambda con si pero sin otra cosa (4)

¿Qué hay de malo con lambda x: x if x < 3 else None ?

Estaba escribiendo algunas funciones lambda y no podía resolver esto. ¿Hay una manera de tener algo como lambda x: x if (x<3) en python? Como lambda a,b: a if (a > b) else b funciona bien. Hasta ahora, lambda x: x < 3 and x or None parece ser lo más cercano que he encontrado.



Siempre puede intentar invocar ''filtro'' para verificaciones condicionales. Fundamentalmente, map() tiene que trabajar en cada aparición de los iterables, por lo que no puede seleccionar y elegir. Pero el filtro puede ayudar a reducir las opciones. Por ejemplo, creo una lista del 1 al 19, pero quiero crear una tupla de cuadrados de solo números pares.

x = list(range(1,20)) y = tuple(map(lambda n: n**2, filter(lambda n: n%2==0,x))) print (y)


Un lambda, como cualquier función, debe tener un valor de retorno.

lambda x: x if (x<3) no funciona porque no especifica qué devolver si no x<3 . Por defecto las funciones devuelven None , por lo que podrias hacer

lambda x: x if (x<3) else None

Pero tal vez lo que está buscando es una lista de comprensión con una condición if . Por ejemplo:

In [21]: data = [1, 2, 5, 10, -1] In [22]: [x for x in data if x < 3] Out[22]: [1, 2, -1]