首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何朗读Python列表理解?

如何朗读Python列表理解?
EN

Stack Overflow用户
提问于 2012-01-30 17:30:24
回答 2查看 4.2K关注 0票数 23

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

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

下面是我如何朗读下面这行代码,以便理解它:

代码语言:javascript
复制
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

对于列表x中的每个元素和列表y中的每个元素,如果这两个元素不同,将创建一个元组列表

我正在努力的两个例子:你如何大声朗读下面的列表理解?

堆栈溢出:[x for b in a for x in b]

  • Python文档中的另一个问题中的
  1. 具有以下示例:[[row[i] for row in matrix] for i in range(4)]

任何关于朗读列表理解的方法的建议或指示,以便使意图变得更加清晰,我们都非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 17:34:51

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

代码语言:javascript
复制
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

是生成器的列表理解。

代码语言:javascript
复制
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]是对

代码语言:javascript
复制
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)] (注意,内部表达式是另一种理解!):

代码语言:javascript
复制
for i in range(4):
    yield [row[i] for row in matrix]

它是展开的

代码语言:javascript
复制
for i in range(4):
    l = []

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

    yield l
票数 34
EN

Stack Overflow用户

发布于 2012-01-30 17:32:37

“根据Q为真的Y和Z构造X的列表。”

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9061760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档