python - 如何大声朗读 Python 列表理解?

标签 python list-comprehension

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

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

为了理解它,我将如何大声阅读以下代码行:

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

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

我正在努力解决的两个例子: 您将如何大声朗读以下列表理解?

  1. 来自 Stack Overflow 中的另一个问题:[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

关于python - 如何大声朗读 Python 列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9061760/

相关文章:

python - pandas - 数据透视表到方阵

python - 如何使用 cv2.createButton 在 OpenCV 3.1 中制作按钮?

Python3 : Matching elements between two lists based upon substrings

scala - "list comprehension"可以被视为 "functional programming"吗?

python - 使用列表理解从python列表字典中提取列表元素

python - 根据字典内的键值对将字典列表拆分为列表长度的列表列表

python - 返回以大写字母开头的文件中的最后一个单词

python - 仅在第一次出现分隔符时拆分字符串

python - 在 Python 的多处理库中获取队列的长度

python - 使用列表理解和扩展