gpt4 book ai didi

lambda函数内的python迭代过程

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:42 25 4
gpt4 key购买 nike

我有一个简单的 python 函数

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

是否可以使用 lambda 来做同样的事情?它需要在 lambda 内部进行迭代,但我仍然相信这是可能的。

最佳答案

为了多样性:

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

利用 iter 的双参数形式和两个生成器表达式的非递归解决方案。

iter(int, 1) 调用 int() 直到它返回 1,这根本不可能发生。因此内部生成器表达式

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

是一个无限期地计算和产生 m + np.random.randn() * s 的生成器。外部生成器表达式从内部表达式中逐一获取值,但只生成等于或大于零的值。 next 函数然后从外部生成器获取第一个值,该值是匹配条件的内部生成器产生的第一个值。

关于lambda函数内的python迭代过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42518960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com