python中两个连续的yield语句如何工作? [复制]

2023-12-27

我偶然发现了这段代码pymotw.com https://pymotw.com/3/itertools/在合并和分裂部分。

from itertools import *


def make_iterables_to_chain():
    yield [1, 2, 3]
    yield ['a', 'b', 'c']


for i in chain.from_iterable(make_iterables_to_chain()):
    print(i, end=' ')
print()

我无法理解 make_iterables_to_chain() 是如何工作的。它包含两个yield语句,它是如何工作的? 我知道发电机是如何工作的,但那里只有一个yield陈述。

请帮助!


同样的方法单yield works.

你可以有任意多个yields 如你所愿在发电机中,当__next__被调用时,它将执行直到遇到下一个yield。然后,您返回生成的表达式,并且生成器暂停,直到它__next__方法被再次调用。

运行几个next调用生成器来查看:

>>> g = make_iterables_to_chain()  # get generator
>>> next(g) # start generator, go to first yield, get result
[1, 2, 3]
>>> next(g) # resume generator, go to second yield, get result
['a', 'b', 'c']
>>> # next(g) raises Exception since no more yields are found 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中两个连续的yield语句如何工作? [复制] 的相关文章

随机推荐

  • NativeScript WebView在默认浏览器中打开url

    我正在尝试构建应用程序WebView以及 WebView 内 URL 上的单击 点击事件 下面的解决方案打开外部浏览器和 URL 但它也在 webview 中加载相同的 url 内容 有没有办法阻止在 webview 中加载新的 url 这
  • 运行“npm install”时保留符号链接

    如果我们这样做 npm link x 然后我们跑npm install 它将覆盖符号链接包 有没有办法跑npm install不覆盖符号链接包 就像是 npm install preserve symlinks or npm install
  • 如何防止单击锚元素内的图像时的链接行为?

    我有一个与此类似的代码 a href link html goto link page img src images edit gif alt a 现在 如果您单击文本 我希望 href 链接能够正常工作 但是如果您单击图像 它应该执行其他
  • 在 Safari 中跳转输入字段

    我正在尝试重新创建一个非常酷的占位符用户界面 http dribbble com shots 1254439 GIF Mobile Form Interaction list users只使用 HTML 和 CSS 我就差不多明白了 dem
  • Vulkan 的 VkMemoryHeapFlagBits 是否缺少值?

    在 Vulkan 规范 1 0 9 第 180 页 中 我们有以下内容 typedef struct VkMemoryHeap VkDeviceSize size VkMemoryHeapFlags flags VkMemoryHeap 和
  • C# - 值类型的引用包装器

    我想用c Pointtype 作为引用类型 它是一个结构 我想到了上课CPoint 其中将包含一个Point成员 有什么办法可以提高会员人数吗 Point担任成员Cpoint 我正在努力避免 cpoint point X cpoint po
  • SQL Server 从表中读取 csv 二进制文件

    我目前将 csv 格式的文件存储在磁盘上 然后像这样查询它们 SELECT FROM OPENROWSET BULK C myfile csv FORMATFILE C format fmt FIRSTROW 2 AS rs 其中 form
  • javascript 中计数器变量的奇怪值[重复]

    这个问题在这里已经有答案了 可能的重复 Javascript 臭名昭著的循环问题 https stackoverflow com questions 1451009 javascript infamous loop problem 由于某种
  • Django 1.9:django.core.exceptions.AppRegistryNotReady:应用程序尚未加载

    我正在尝试使用这个应用程序https github com benliles django chance https github com benliles django chance在我的应用程序中 我的 Django 版本是 1 9 我
  • 底部对齐 R 闪亮按钮

    我无法找到底部对齐的方法downloadButton with a selectizeInput i e library shiny runApp list ui shinyUI fluidPage fluidRow align botto
  • 如何在Android上像instagram一样实现视频过滤器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要在我的 Android 应用程序中添加视频过滤器 例如Instagram 我搜索了很多 但没有找
  • 打印 HasMorePages 不起作用 c#

    好吧 所以我一直在四处寻找 在 SO 和 Google 上 看看一个问题是否可以解决我的错误 但显然不能 所以这里是 我正在尝试打印有时会超过一页的内容 并且我正在检查要打印的页数 检查完所有这些逻辑后 我使用HasMorePages属性来
  • 使用 JSlider 实时更新 jFreeChart 的透明度

    我想问这个问答问题的后续问题 JFreeChart 可见后如何更新其外观 https stackoverflow com questions 5522575 how can i update a jfreecharts appearance
  • 为什么并行 for_each 需要前向迭代器?

    我正在设计一个遍历多个容器的迭代器 因此有一个代理对象作为返回类型 因此 它最多只能成为一个输入迭代器 这是因为前向迭代器需要reference是一个实际的引用类型 但据我所知 这对于输入迭代器来说并非如此 让我说 简单for each与我
  • 点符号解除分配?

    property copy NSString name property copy NSString orbit property copy NSNumber mass property float surfaceTemp property
  • 如何配置粘合书签以与 scala 代码一起使用?

    考虑 Scala 代码 import com amazonaws services glue GlueContext import com amazonaws services glue util GlueArgParser Job Jso
  • 致命错误:凭证缓存不可用;不支持 Unix 套接字

    我有一个应用程序并尝试将其推送给私人代表 但不确定为什么会收到此错误 代码未显示在 GitHub 上 gt git push u origin main fatal credential cache unavailable no unix
  • 在 UDF 之上使用 Excel 内置函数

    我不知道为什么Excel内置函数出于某种原因 SUM 无法真正总结自定义 UDF 创建的结果 似乎总是以 0 结尾 例如 我有一个以下 UDF 名为myUDF 这将返回项目的数量 对于细胞A1 公式 myUDF ItemA 结果 10 对于
  • 使用 Material UI 时 borderRadius 不起作用

    我在我的 Web 应用程序中使用 ReactJS 和 Material UI 当我为搜索栏定义道具搜索时 除了 borderRadius 之外它都可以工作 我检查了开发人员工具 F12 中的 样式 选项卡 边框半径属性被覆盖 但搜索栏没有改
  • python中两个连续的yield语句如何工作? [复制]

    这个问题在这里已经有答案了 我偶然发现了这段代码pymotw com https pymotw com 3 itertools 在合并和分裂部分 from itertools import def make iterables to cha