Proceso iterativo de Python dentro de la función lambda

Tengo una función python simple

def positiveGauss(mean,stdev): result = -1 while result < 0: result = mean + np.random.randn()*stdev return result 

¿Es posible hacer el mismo truco usando lambda ? Requiere tener iteraciones dentro de lambda, pero sigo creyendo que es posible.

Por el bien de la diversidad:

 lambda m, s: next(x for x in (m + np.random.randn() * s for _ in iter(int, 1)) if x >= 0) 

Una solución no recursiva que aprovecha la forma de dos argumentos de iter y dos expresiones generadoras.

iter(int, 1) llama a int() hasta que devuelve 1 , lo que simplemente no puede suceder. Por lo tanto la expresión del generador interno.

 (m + np.random.randn() * s for _ in iter(int, 1)) 

es un generador que evalúa y produce m + np.random.randn() * s tiempo indefinido. La expresión del generador externo toma los valores de la expresión interna uno por uno, pero solo produce valores que son iguales o mayores que cero. La next función toma el primer valor del generador externo, que es el primer valor generado por el generador interno que cumple la condición.

 positive_gauss = lambda mean, stddev, result = -1: positive_gauss(mean, stddev, mean + np.random.randn()*stddev) if result < 0 else result 

Esta es una función recursiva. Lo desglosaré ...

 lambda mean, stddev, result = -1: # takes 3 parameters positive_gauss(mean, stddev, mean + np.random.randn()*stddev) if result < 0 # ^ Your first condition, if its true call the same function modifying result else result # if the above one fails just return result. 

Sí, como @ juanpa.arrivillaga, esto no debe usarse porque está perdiendo la esencia de las funciones anónimas.