python - 列表推导式中表达式的执行顺序

标签 python list list-comprehension

给出以下表达式:

matrix = [[1,2,3],[4,5,6],[7,8,9]]

创建一个矩阵,然后执行列表理解以创建一个平面列表。理解是从左到右进行的。

flat = [x for row in matrix for x in row]

随后,对于矩阵中的每一行,其值将被平方。这个理解力如何评价?

squared = [[x**2 for x in row] for row in matrix]

最佳答案

第一个理解相当于:

flat = []
for row in matrix:
    for x in row:
        flat.append(x)

第二个推导式相当于:

squared = []
for row in matrix:
    tmp = []
    for x in row:
        tmp.append(x**2)
    squared.append(tmp)

(除了在封闭范围内创建其他变量,例如 xrowtmp。)

关于python - 列表推导式中表达式的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53419548/

相关文章:

python - 解析包含尾随逗号的 "JSON"

python - 如何在 Pandas DataFrame 中找到特定的子字符串,然后获取其后面的文本?

c# - 如何遍历包含一个字典的字典,该字典包含另一个包含列表的字典

python-3.x - 将嵌套列表转换为字典 | Python

list - 元组的haskell列表,具有独特的元组

python - 具有类属性的列表理解

Python 类派生自 pandas DataFrame,具有 list/DataFrame 属性

Python 绘图 : Heatmap from dataframe with fixed colors in case of strings

python - 迭代列表项时减少列表的长度

python - python 中的大型对称列表 : will references contribute to size in ram?