你的问题的答案取决于你的学习目标是什么。如果您试图让矩阵“点击”以便以后使用它们,我建议您查看一个Numpyarray,而不是一个列表列表。这将使您可以轻松地分割行、列和子集。只要试着从列表中获取一个列,你就会感到沮丧。
使用列表列表作为矩阵
让我们以您的列表为例:L = [list("ABCDE") for i in range(5)]
很容易为任何行获取子元素:>>> L[1][0:3]
['A', 'B', 'C']
或整行:>>> L[1][:]
['A', 'B', 'C', 'D', 'E']
但是试着把它转换成列格式的相同元素,它就不起作用了。。。>>> L[0:3][1]
['A', 'B', 'C', 'D', 'E']
>>> L[:][1]
['A', 'B', 'C', 'D', 'E']
你必须使用类似列表理解的方法来获取所有的第1个元素。。。。>>> [x[1] for x in L]
['B', 'B', 'B', 'B', 'B']
输入矩阵
如果改为使用数组,您将获得期望从MATLAB或R(或大多数其他语言)获得的切片和索引:>>> import numpy as np
>>> Y = np.array(list("ABCDE"*5)).reshape(5,5)
>>> print Y
[['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']]
>>> print Y.transpose()
[['A' 'A' 'A' 'A' 'A']
['B' 'B' 'B' 'B' 'B']
['C' 'C' 'C' 'C' 'C']
['D' 'D' 'D' 'D' 'D']
['E' 'E' 'E' 'E' 'E']]
抓取第1行(与列表一样):>>> Y[1,:]
array(['A', 'B', 'C', 'D', 'E'],
dtype='|S1')
抓取列1(新!)以下内容:>>> Y[:,1]
array(['B', 'B', 'B', 'B', 'B'],
dtype='|S1')
现在要生成打印矩阵:for mycol in Y.transpose():
print " ".join(mycol)
A A A A A
B B B B B
C C C C C
D D D D D
E E E E E