当前位置: 首页 > 面试题库 >

如何大声阅读Python列表推导?

鲍永春
2023-03-14
问题内容

我的问题是关于Python List Comprehension的
可读性。当我遇到具有复杂/嵌套列表理解的代码时,我发现我不得不重新阅读它们几次才能理解其意图。

有一种直观的方法来朗读列表理解吗?似乎我应该从中间开始“读取”,然后读取 if 条件(如果有),最后读取 表达式

这是我如何大声阅读下面的代码行,以便理解它:

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

“对于列表x中的每个元素,以及列表y中的每个元素, 如果两个元素不同 ,则 创建一个 元组 列表 。”

我正在苦苦挣扎的两个示例:您将如何大声阅读以下列表理解?

  1. 来自堆栈溢出的另一个问题: [x for b in a for x in b]

  2. Python文档具有以下示例[[row[i] for row in matrix] for i in range(4)]

非常感谢任何有关大声阅读列表理解方法的建议或指针,以使意图变得更加清晰。


问题答案:

我通常在脑海中将其展开为一个生成循环,例如

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

是生成器的列表理解

for x in [1,2,3]:
    for y in [3,1,4]:
        if x != y:
            yield (x, y)

例子1

[x for b in a for x in b] 是对

for b in a:
    for x in b:
        yield x

结果示例a = [[1,2,3],[4,5,6]][1, 2, 3, 4, 5, 6]

范例#2

[[row[i] for row in matrix] for i in range(4)] (请注意,内部表达式是另一种理解!):

for i in range(4):
    yield [row[i] for row in matrix]

展开了

for i in range(4):
    l = []

    for row in matrix:
        l.append(row[i])

    yield l


 类似资料:
  • 推荐阅读 David Goodger的 Code Like a Pythonista: Idiomatic Python 包含了很多实用的Python例子和技术。 Doug Hellmann的 Python Module of the Week 系列的重点是建设一个使用Python标准库中的模块的示例代码的仓库。

  • 文档资料 必须 熟记 Laravel 5.5 官方文档,查阅时能快速定位,5 遍以上; 必须 熟记 Laravel 5.5 API 文档 的类结构,查阅时能快速定位; 必须 熟记所有 PSR 通过的标准; PSR 目前还未通过的标准,也要 应该 知晓 http://www.php-fig.org/psr/ 应该 熟悉 PHP 最佳实践 应该 了解 『Rails 信条』 教程 如果你是新手,想从零开

  • 关于react生命周期相关的介绍 React.Component components组件思想使得你在开发用户页面的时候,把界面看成是一个个独立、可重用的子块,并且每个块都是隔离于其它板块的。React.Component是React上提供的一个方法! Overview React.Component是一个抽象基础类,我们很少直接提伦它,相反,我们更倾向于关心它的子类,我们在定义组件的时候,最少应

  • 以下是一些精选的书籍,介绍复杂性科学,并且是了解该领域的全貌的一种愉快的方式。 Axelrod, Complexity of Cooperation. Axelrod, The Evolution of Cooperation. Bak, How Nature Works. Barabasi, Linked. Buchanan, Nexus. Epstein and Axtell, Growing

  • 请问代码中的 metadatas["auth"] 是什么..

  • 如何用Python阅读pdf?我知道一种将其转换为文本的方法,但我想直接从PDF阅读内容。 谁能解释一下python中的哪个模块最适合pdf提取