python - 这个 Python 列表推导式是按什么顺序执行的?

标签 python list list-comprehension

<分区>

我对这个列表理解有点困惑:

l = [[i * j for j in range(3, 5)] for i in range(3)]

按什么顺序执行?

最佳答案

这是一个非常普通的列表理解形式:

[expression for var in iterable]

在这种情况下,expression恰好是另一个列表理解。因此,内部理解将为外部迭代产生的每个项目评估一次。

如果我们将内部理解分解为一个函数,可能会感觉更清楚一些:

def inner(i):
    return [i * j for j in range(3, 5)]

l = [inner(i) for i in range(3)]

现在我们更清楚地看到(希望无论如何)外部理解导致内部理解对 i 中的每个“range(3) ”执行一次.

关于python - 这个 Python 列表推导式是按什么顺序执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36440162/

相关文章:

python - 为什么列表理解在转置矩阵中胜过 zip

Haskell - 列表列表中的元素组合列表

python - 如何在保留顺序的同时从列表中删除重复项?

python - 如何将字典绑定(bind)为准备好的查询参数?

python - 如何使 simplejson 可序列化类

python - 如何使用递归通过将集合拆分为第一个和其余部分来获取子集(python)

python - 适用于 PostgreSQL 和 MySQL 的纯 python SQL 解决方案?

python - 在保持结构的同时重置嵌套列表

python - 从拆分为变量的列表中删除\n - Python

python - 如何使输出的最后一列仅包含列表的每个元素而不是整个列表?