问题标签 [yield-from]
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 - 如何使用 os.scandir() 来取回空目录名和非空目录名
在https://stackoverflow.com/a/33135143中,递归返回目录结构中所有文件名的解决方案如下所示。
我还需要有关目录结构中每个子目录的信息以及文件和目录的完整路径名。所以如果我有这个结构:
我会需要:
我如何必须从上述答案中更改解决方案才能实现这一目标?为了完整起见,下面给出答案:
python - 使用产量生成器从列表中删除连续重复项?
我正在尝试使用生成器压缩列表:
例子
我尝试使用生成器检查第一个和第二个元素是否相等,然后检查第二个和第三个等等,直到它不再相等“当它达到 4”然后产生“5”然后它会重复这个过程开始“4”
代码
但我一直在
生成器对象压缩在 0x00000254D383C820。为什么它不会循环?
如果我尝试使用 next() 它只会上升到 5 并且不会检查其他数字。
非常感谢任何帮助。
python - “来自”另一个生成器,但在处理之后
我们如何从另一个子生成器中产生,但要进行转换/处理?
例如:在下面的代码中,main_gen 使用 f(x) 转换后产生 x
这可以用yield from代替吗?如果可以,怎么做?
php - 同一功能的“产量”和“产量”
我需要使用yield
和yield from
相同的功能,但它似乎不能按预期工作,一旦它只产生最后一个yield from
或yield
(最后一个)。
我的代码是(https://3v4l.org/jFDXh):
对于所有 PHP 版本,它只会输出[ 7, 8, 9 ]
,但对我来说似乎很清楚它应该是[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
。
但是,如果我通过 a 做同样的foreach
事情,一切似乎都很正常。看起来是与 相关的问题iterator_to_array()
,但实际上我需要将它转换Generator
为数组。
那么,我错过了什么?
python - 如何截取生成器的第一个值并透明地从其余值中产生
更新:我已经在 python-ideas 上启动了一个线程来为此目的提出额外的语法或 stdlib 函数(即指定发送的第一个值yield from
)。到目前为止 0 回复... :/
如何截取子生成器的第一个产生的值,但将剩余的迭代委托给后者使用yield from
?
例如,假设我们有一个任意的双向生成器subgen
,并且我们想将它包装在另一个生成器gen
中。的目的gen
是拦截第一个产生的值subgen
并将生成的其余部分(包括发送的值、抛出的异常、.close() 等)委托给子生成器。
首先想到的可能是这样的:
但这是错误的,因为当调用者.send
在获得第一个值后返回给生成器时,它最终会作为yield "intercepted"
表达式的值,被忽略,而是作为第一个值g
接收,作为语义的一部分的。None
.send
yield from
所以我们可能会考虑这样做:
但是我们在这里所做的只是将问题向后移了一步:一旦我们调用g.send(received)
,生成器就会恢复执行并且不会停止,直到它到达下一个 yield 语句,其值成为.send
调用的返回值. 所以我们还必须拦截并重新发送它。然后发送那个,然后再发送一次,依此类推......所以这行不通。
基本上,我要求的是一种yield from
自定义发送到生成器的第一个值的方法:
...但不必重新实现yield from
我自己的所有语义。也就是说,费力且维护性差的解决方案是:
这基本上是一个糟糕的重新实现yield from
(它缺少对 , 等的处理throw
)close
。理想情况下,我想要一些更优雅、更少冗余的东西。
python - 如何使用产量和生成器函数将递归函数的输出保存到项目列表中
我有来自此链接的以下 XML 文件作为示例:
我有以下打印输出的递归函数:
下面的行打印结果:
输出:
我需要将输出保存到下面的项目列表中。
所以尝试了以下修改。但无法将结果作为列表。
我试图修改 print_level() 函数以提供一些可返回的输出而不是打印它,但不知道该怎么做。
将生成器更改为 list 给我相同的输出
我在其他链接中检查了类似的问题,但不太了解。
python - Recursing python dictionaries with yield from to generate list of nested dictionary keys
I want to generate a list of unique nested keys for each value in a dictionary such that:
I thought something along these lines would work, appending each key to a list and recursing until a value is reached. At which point I yield a list and carry on.
However when running, the result is all the unique keys
Think I must be missing something here on how yielding / input arguments work
python - 如何理解 python 协程中的“yield from”?
代码来自Fluent Python 第一版,
我无法理解 中的行while True:
,grouper
删除该行会引发StopIteration
错误。
但我发现grouper
没有while True:
那个工作的新版本。为什么group.send(None)
需要另一个循环while True:
(或另一个results[key] = yield from averager()
)?
我的理解是group.send(None)
将停止yield from averager()
并分配results[key]
一个值(Result(count, average)
)。就这样。
python-3.x - python中“Yield from”的透彻解释
再会!在过去的几天里,我一直在诚实地尝试消化 python“Yield from”语句的真相和工作原理……我对 Interables、Iterators、Generators 和 Yield 语句以及 Yield 语句的基本协程有了具体的理解一个表情……
但我似乎无法从...开始围绕 Yield ...
例子
大多数在线材料要么过于技术性,要么是 PEP 380 的直接引用。任何和所有帮助都将受到赞赏。提前致谢。