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

时间:2018-11-21 19:49:58

标签: 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]

1 个答案:

答案 0 :(得分:0)

第一个理解等效于:

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之类的封闭范围内创建其他变量之外)。