当前位置: 首页 > 面试题库 >

Lambda函数内部的python迭代过程

韦泳
2023-03-14
问题内容

我有一个简单的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函数从外部生成器获取第一个值,该值是内部生成器与条件匹配得出的第一个值。



 类似资料:
  • 本文向大家介绍详解Python中的内建函数,可迭代对象,迭代器,包括了详解Python中的内建函数,可迭代对象,迭代器的使用技巧和注意事项,需要的朋友参考一下 Python中的内建函数和可迭代对象,迭代器 求值标识 id() #标识id 返回对象的唯一标识,CPython返回内存地址 hash() #哈希, 返回对象的哈希值 len(s) -->返回一个集合类型的元素个数 range(start,

  • 在过去的几个小时里,我一直在调试、配置和命名它,我似乎不明白为什么会发生这种情况。 我正在尝试调用一个 lambda 函数,该函数只是从 ec2 中检索基本信息。当我在aws控制台中测试此lambda函数时,它似乎工作正常。但是,使用以下代码在另一个lambda中调用它; 它只是超时了。没有任何反应…两个Lambda都连接到VPC和所有子网 我认为是我的新VPC导致了这个问题。我的VPC包括: 1

  • 问题内容: 我只是想知道内部和外部迭代的真正好处是什么,以及为什么使用内部操作更好(至少是我所听到的)。在对集合进行内部迭代时,是否还可以删除集合的元素?就像在代码示例中一样: 我知道内部迭代的代码可读性更好,但是还有其他一些好处,例如性能改进? 问题答案: 您的情况有些简单,因为您可以简单地使用resp。而是使用内部迭代的替代方法,它也可以处理更复杂的条件。 在的情况下,这将立即显示内部迭代的优

  • 我当时正在读一本名为《现代Java在行动》的书,其中一部分代码我无法理解。 作者表示,代码不会终止。原因是无法在过滤器中知道数字是否继续增加,因此它会无限地继续过滤它们! 我不明白原因。有人能解释一下为什么吗。

  • 合并和拆分迭代器 # itertools_chain.py from itertools import * for i in chain([1, 2, 3], ['a', 'b', 'c']): print(i, end=' ') print() # itertools_chain_from_iterable.py from itertools import * def make_

  • 严格说来,Ruby中没有函数.但Kernel模块中定义的方法(可以在任何地方用做函数,因此)可被其他语言当做函数来调用.若您对这些方法进行再定义时,就必需考虑到对其他方面的影响. `str 把字符串str当做外部命令来运行,并以字符串方式返回命令的输出.使用`str`形式来调用该方法(还可以使用%x(...)表示法进行调用.请参考命令输出). 可以使用$?来了解命令的结束状态. 若您只想执行命令,

  • 我试图运行一个简单的mapdb示例,但出现了以下错误: 我的班级: 我的pomx.xml 我跑得很快-

  • 我有一个任意嵌套的迭代程序,如下所示: 我想在不改变结构的情况下映射一个函数。例如,我可能希望将所有数字转换为字符串,以获取 有什么好办法吗?我可以编写自己的方法来手动遍历,但我想知道是否有一种通用的方法来映射递归迭代表。