列表推导式可以有依赖迭代器吗?

Barbara Streisand
发布: 2024-11-02 13:21:02
原创
598 人浏览过

 Can List Comprehensions Have Dependent Iterators?

列表推导式中的独立迭代器

在 Python 中,列表推导式允许多个迭代循环。考虑以下示例:

<code class="python">[(x, y) for x in a for y in b]</code>
登录后复制

其中 a 和 b 是序列。此推导式根据 a 和 b 的笛卡尔积创建元素对。

迭代器可以相互依赖吗?

列表推导式中的一个迭代器可以引用另一个迭代器吗?答案是肯定的,下面的代码演示了这一点:

<code class="python">[x for x in a for a in b]</code>
登录后复制
登录后复制

在这个理解中,外循环迭代器 a 成为内循环的迭代器。这有效地展平了嵌套列表。

示例

如果我们有一个嵌套列表 a:

<code class="python">a = [[1, 2], [3, 4]]</code>
登录后复制

以下列表推导式会将其展平到单个列表中:

<code class="python">[x for x in a for a in b]</code>
登录后复制
登录后复制

结果:

[1, 2, 3, 4]
登录后复制

使用生成器的替代解决方案

在提供的Python代码中,文本是存储为句子,任务是提取单个单词列表。以下是使用生成器实现此目的的方法:

<code class="python">text = ((&quot;Hi&quot;, &quot;Steve!&quot;), (&quot;What's&quot;, &quot;up?&quot;))
gen = (word for sentence in text for word in sentence)</code>
登录后复制

gen 变量现在生成扁平化的单词列表:

<code class="python">for word in gen:
    print(word)</code>
登录后复制

输出:

Hi
Steve!
What's
up?
登录后复制

以上是列表推导式可以有依赖迭代器吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!