请向我解释此代码?

时间:2018-08-12 18:52:56

标签: python-3.x

rez = [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))]

当我们在for loop中使用它时,我无法理解它将如何打印转置。有人可以彻底解释其工作原理吗?

1 个答案:

答案 0 :(得分:1)

@Parakh,您未指定m是什么,所以我将其设为2d数组:

m = [[6, 2], 
     [3, 4]]

rez = [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))]
print(rez)

[[6,3],[2,4]]

这与:

```
m = [[6, 2], 
     [3, 4]]

rez = []
for i in range(len(m[0])):
    temp = []
    for j in range(len(m)):
        temp.append(m[j][i])
    rez.append(temp)
print(rez)
```

这将产生第0列第0行(6)和第0列第1行(3)作为第一个新列表, 然后是第1列第0行(2)和第1列第1行(4)作为第二个新列表。

j是行索引,i是列索引。

i[0], j[0] = 6
i[0], j[1] = 3 
i[1], j[0] = 2
i[1], j[1] = 4