问题标签 [generator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - “yield”关键字有什么作用?
yield
Python中关键字的用途是什么?它有什么作用?
例如,我试图理解这段代码1:
这是调用者:
调用方法时会发生什么_get_child_candidates
?是否返回列表?单一元素?又叫了吗?后续调用何时停止?
1. 这段代码由 Jochen Schulz (jrschulz) 编写,他为度量空间制作了一个很棒的 Python 库。这是完整源代码的链接:Module mspace。
ruby-on-rails - Rails 生成器 m.directory 返回无法将 nil 转换为 String
我已经编写了这个生成器代码,但是当我在清单中调用 m.directory 时它返回“无法将 nil 转换为字符串”。有谁知道发生了什么?
结尾
python - 什么时候不适合使用 python 生成器?
这与您可以使用 Python 生成器函数做什么?: python 生成器、生成器表达式和itertools
模块是我最近最喜欢的 python 功能。它们在设置操作链以对大量数据执行时特别有用——我经常在处理 DSV 文件时使用它们。
那么什么时候不适合使用生成器、生成器表达式或itertools
函数呢?
- 我应该什么时候更喜欢
zip()
,itertools.izip()
或者 range()
超过xrange()
, 或[x for x in foo]
结束了(x for x in foo)
?
显然,我们最终需要将生成器“解析”为实际数据,通常是通过创建一个列表或使用非生成器循环对其进行迭代。有时我们只需要知道长度。这不是我要问的。
我们使用生成器,这样我们就不会为临时数据分配新列表到内存中。这对于大型数据集尤其有意义。它对小型数据集也有意义吗?是否存在明显的内存/cpu 权衡?
鉴于列表理解性能与 map() 和 filter()的令人大开眼界的讨论,如果有人对此进行了一些分析,我特别感兴趣。(替代链接)
python - Python:使用递归算法作为生成器
最近我写了一个函数来生成具有非平凡约束的某些序列。问题来自一个自然的递归解决方案。现在碰巧的是,即使对于相对较小的输入,序列也是数千个,因此我更愿意使用我的算法作为生成器,而不是使用它来填充所有序列的列表。
这是一个例子。假设我们想用递归函数计算一个字符串的所有排列。以下朴素算法采用额外的参数“存储”,并在找到时附加一个排列:
(请不要在意效率低下,这只是一个例子。)
现在我想把我的函数变成一个生成器,即产生一个排列而不是将它附加到存储列表中:
此代码不起作用(该函数的行为类似于一个空生成器)。
我错过了什么吗?有没有办法将上述递归算法变成生成器而不用迭代算法替换它?
.net - .NET 名称生成器
有没有人写过或知道一个库,可以生成相当准确的西欧风格名称?即 John、Susan、Smith、Julien、April 等,等等……
python - 如何从生成器构建 numpy 数组?
如何从生成器对象中构建一个 numpy 数组?
让我来说明问题:
在这种情况下,gimme()
是我想将其输出转换为数组的生成器。但是,数组构造函数不会遍历生成器,它只是存储生成器本身。我想要的行为是 from numpy.array(list(gimme()))
,但我不想支付同时在内存中拥有中间列表和最终数组的内存开销。有没有更节省空间的方法?
c - Yacc 问题:使数据在下一个非终端中可用
我想让我在 b 中生成的一些变量在 c 中可用:
一个简单的例子:
所以我可以,稍后在 c 中说:
有没有机会这样做?任何帮助将不胜感激!
python - 发电机输出长度
Python 提供了一种很好的方法来获取急切迭代的长度,len(x)
即。但是对于由生成器理解和函数表示的惰性迭代,我找不到任何类似的东西。当然,写这样的东西并不难:
但我无法摆脱我正在重新实现自行车的感觉。
(当我输入函数时,我突然想到:也许真的没有这样的函数,因为它“破坏”了它的论点。不过,这对我来说不是问题)。
PS:关于第一个答案 - 是的,类似的东西len(list(x))
也可以,但这会大大增加内存的使用。
PPS:重新检查...忽略PS,似乎我在尝试时犯了一个错误,它工作正常。抱歉,添麻烦了。
.net - 如何使用生成器遍历树结构?
我试图弄清楚如何在树节点中实现一个函数,该函数返回其所有后代叶子(无论是直接的还是间接的)。但是,我不想传递将递归放置叶节点的容器(树可能很大),而是我想使用生成器来遍历树。我尝试了几种方法,但到目前为止没有一种方法有效。这是我最接近可能的解决方案的一个:
但这也不起作用。我究竟做错了什么?如果同一个函数中有一个 yield 语句,似乎递归调用 .EnumerateLeaves 将不起作用。
任何帮助将不胜感激。提前致谢。
编辑:我忘了提到一个分支可以有叶子或分支作为孩子,因此递归。
nhibernate - 如何使用 NHibernate 和 Firebird 生成 id?
我正在尝试使用 NHibernate 将一些新对象插入到 firebird 数据库中。
我收到错误“无法获取下一个序列值 [SQL:SQL 不可用]”
这是我目前使用的映射。注意 ANML_EVNT 是我要使用的生成器的名称。