rth*_*rth 3 python lambda loops
我有一个简单的python 函数
def positiveGauss(mean,stdev):
result = -1
while result < 0:
result = mean + np.random.randn()*stdev
return result
Run Code Online (Sandbox Code Playgroud)
是否有可能使用lambda做同样的技巧?它需要在lambda中进行迭代,但我仍然相信它是可能的.
为了多样性:
lambda m, s: next(x for x in (m + np.random.randn() * s for _ in iter(int, 1)) if x >= 0)
Run Code Online (Sandbox Code Playgroud)
一种非递归解决方案,它利用了两个参数形式iter和两个生成器表达式.
iter(int, 1)调用int()直到它返回1,这根本不可能发生.因此内部生成器表达式
(m + np.random.randn() * s for _ in iter(int, 1))
Run Code Online (Sandbox Code Playgroud)
是一个m + np.random.randn() * s无限期评估和收益的生成器.外部生成器表达式逐个从内部表达式中获取值,但只生成等于或大于零的值.next然后该函数从外部生成器获取第一个值,该值是内部生成器与条件匹配的第一个值.
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |