矩阵的转置

ffl*_*ing 2 python list-comprehension matrix

我试图在python中找到矩阵的转置而不实际使用矩阵的大小.

我需要使用列表推导来为[范围(n)中的i做[[row [i] for row in test]],其中test是一个nxn矩阵而不实际使用n.

unu*_*tbu 5

如果test是由列表列表表示的矩阵,那么

zip(*test)
Run Code Online (Sandbox Code Playgroud)

是转置.例如,

In [16]: t = [[1,2,3],[4,5,6]]

In [17]: t
Out[17]: [[1, 2, 3], 
          [4, 5, 6]]

In [18]: zip(*t)
Out[18]: [(1, 4), 
          (2, 5), 
          (3, 6)]
Run Code Online (Sandbox Code Playgroud)

(输出已格式化,以更清楚地显示结果).

zip(*t)首先要了解如何zip运作,然后研究论证拆包.这有点令人头疼,但是一旦你看到它如何运作,你将成为这两个概念的专家,效果非常令人愉悦.


这里没有理由使用列表理解,但无论如何你都可以这样做:

In [21]: [[row[i] for row in t] for i in range(len(t[1]))]
Out[21]: [[1, 4], [2, 5], [3, 6]]
Run Code Online (Sandbox Code Playgroud)

(len(t[1])给出列数.)