问题标签 [yield-keyword]
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 - 无法理解生成器的简单示例
我在几个地方找到了这些简单的例子:
在第一个示例中,生成器会自行耗尽,在第二个示例中它不会耗尽,但 for 循环负责停止无限生成。一个典型的解释是yield
“返回”一个值,冻结函数状态,当被调用时,函数将从该状态继续next()
。这种解释是不是有点误导?在任一示例中,我都无法“可视化”多次调用生成器函数的任何内容 ( next()
)。返回一个生成器不是更好yield
吗,它是一个只能迭代一次的可迭代对象?
编辑:生成器也不是可迭代对象:它动态生成可迭代对象,并且它“产生”(而不是“返回”)只能迭代一次。在我能正确掌握它之前,这有点令人费解,就像许多其他概念一样:) 谢谢。
javascript - 多人游戏中的对手移动承诺
在过去的四天里,我一直在研究承诺、协程、纤程、延续等。
我仍然不知道如何解决我的多人回合制纸牌游戏动作,其中起始玩家实际上是最多五个 AI 或人类玩家的游戏“控制器”。
下面的代码有效,但有一个问题:-
它无法检测到人类 oppo 的牌移动,因此在没有它们的情况下继续玩,这当然会造成混乱。
任何人都可以建议改变我的整体概念或使用承诺或任何其他“同步”构造的方法吗?
以下是我的代码的四个关键区域:
该游戏在概念上类似于 uno,但具有评分组件
(旨在帮助孩子掌握基本算术)。
python - python生成器中代码的执行何时停止?
我试图通过构建一个行为类似于“枚举”内置函数的生成器来理解 yield 语句的行为,但我目睹了不一致,具体取决于我如何迭代它。
我对生成器的理解是,一旦到达 yield 语句,代码的执行就会停止,并返回一个值。这与我在下面的脚本中得到的相符。
在这种情况下,生成器似乎恰好在 yield 语句处停止,并在第二个“next”语句的 n+=1 中恢复:
但是,如果我使用下面的 for 循环,生成器似乎不会在 yield 语句处停止。
这就是我得到的:
编辑考虑评论
我意识到我只迭代了一个元素,但我没想到会看到最后一个“在生成器中的'yield'语句之后”句子(即使我迭代所有元素也会出现。
为什么会这样?
python - Tornado POST 请求的返回响应
我看过 Tornado 文档和示例,其中 self.write 方法被广泛用于在 HTML 上呈现一些值,其中 POST 请求在处理程序中运行。但是我找不到很清楚如何将响应返回给客户端。
例如,我正在从客户端调用 Tornado 服务器上的 POST 请求。接受post请求的代码是:
有了这个,我可以找到 cbtp 的值,有了self.write(cbtp)
,我可以用 HTML 打印它。但相反,我想以 JSON 格式将此值返回给客户端,就像{'cbtp':cbtp}
我想知道如何修改我的代码以便将此响应发送给客户端,或者给我一些文档,以便对此进行流利的解释。
做类似的事情
抛出一个BadYieldError: yielded unknown object
python - 当变量在“yield”之后时,python 语法是什么?
我从这里得到了这段代码。这是报价:
" 生成器函数接收传递给 send 函数的值,作为相应yield 表达式的结果。 "
注意:它表示 yield 表达式,表示整个“屈服电流”的东西。我的理解正确吗?如果是这样,为什么不直接使用“yield”,从表达式中删除“current”?
python-3.x - 熊猫数据框产量错误
我正在尝试为熊猫数据框生成 1 行 1 行,但出现错误。数据框是一个股票价格数据,包括每日的开盘价、收盘价、最高价、最低价和成交量信息。
以下是我的代码。这个类将从 MySQL 数据库中获取数据
在主函数中:
数据示例:
该update_bars
函数将调用_get_new_bar
移动到下一行(第二天价格)
我的目标是每天获取股票价格(迭代数据框的行),但self.symbol_data[s]
in_connect_MySQL
是数据框,而 in_get_new_bar
是生成器,因此我收到此错误
AttributeError:
'generator'
对象没有属性'itertuples'
有人有想法么?
我正在使用python 3.6。谢谢
self.symbol_data
is a dict
,symbol
是获取数据帧的字符串键。数据为股价数据。例如self.symbol_data["GOOG"]
,按日期返回一个带有谷歌每日股价信息索引的数据框,每行包括开盘价、最低价、最高价、收盘价和成交量。我的目标是每天使用yield
.
_connect_MySQL
将从数据库中获取数据在这个例子中,函数中的s = "GOOG"
python - 在没有内部目录的目录中生成文件
我的任务是训练一个机器学习模型。我想产生文件以避免将来出现内存问题。我偶然发现了一个我稍微调整了一下的解决方案。但是修改并不能完全满足我的需要。假设我拥有的文件夹结构如下:
../
一个/
2014-01-01
2014-01-05
2014-01-06
/乙
2014-01-02
2014-01-06
...
所以基本上在文件夹中:测试,我有子目录,如:A,B .. 等。在每个子目录中,我有日期:2014-01-01 等。
我需要生成器做的是按日期时间顺序生成文件,忽略目录本身(顺序子目录无关紧要,我可以先从 B 获取文件,然后从 A 获取文件,没关系)。
我有以下代码atm:
这将输出如下内容:
即我不需要第一个路径和所有目录路径。
我如何省略这些?
编辑:实际上,glob 似乎返回了一个列表......p.glob('*/*')
似乎可以解决问题,但是sorted(.)
给了我一个列表而不是一个一个地产生文件
python - 基于另一个生成器的生成器
我的任务实际上很简单,但我不知道如何实现它。我打算在我的 ML 算法中使用它,但让我们简化示例。假设有一个像下面这样的生成器:
以上, 将产生我们1
, 2
,3
和4
.
假设上述生成器返回单个“样本”。我想编写一个生成器方法来批量处理它们。假设批量大小为2
。所以如果这个新方法被调用:
然后这个批处理生成器的输出将是:1
and2
然后3
and 4
。元组/列表无关紧要。重要的是如何退回这些批次。我找到yield from
了 Python 3.3 中引入的这个关键字,但在我的情况下它似乎没有用。
显然,如果我们有5
nums 而不是4
, and batch_size
is 2
,我们将省略第一个生成器的最后一个产生的值。
python - `yield` 在烧瓶中的整个解析过程中
首先,我使用烧瓶。
其次,我yield
喜欢下面的代码。
所以在__init__ in
CheckFile之后is completed, I
返回values with
yield` 到响应。
我想做的是能够yield
在.__init__
file.parse()
python - 从磁盘产生 n 个文件
我正在尝试从磁盘读取文件,然后将其拆分为[features and labels]
我的磁盘中有 3.5GB 的巨大数据,我无法同时将其读入内存。如何修改此代码以一次生成 n 个文件进行处理。
有没有更有效的方法来读取 tensorflow 中的大量数据?