您的问题的答案取决于您的学习目标是什么。如果您试图让矩阵“单击”以便以后使用它们,我建议您查看 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']
您必须使用列表理解之类的东西来获取所有第一个元素....
>>> [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