出于多样性的考虑:
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函数从外部生成器获取第一个值,该值是内部生成器与条件匹配得出的第一个值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)