Python 不使用numpy在矩阵中打印列
我对编程非常陌生,如果这是一个非常简单的问题,我深表歉意,但我一直在尝试在不使用numpy的情况下打印矩阵中的第一列,但是它是这样打印的:Python 不使用numpy在矩阵中打印列,python,arrays,matrix,Python,Arrays,Matrix,我对编程非常陌生,如果这是一个非常简单的问题,我深表歉意,但我一直在尝试在不使用numpy的情况下打印矩阵中的第一列,但是它是这样打印的: matrix = \ [[0, 1], [3, 7], [9, 4], [10, 3]] print matrix[0:3][0] [0, 1] 我也试过: print matrix[:][0] [0, 1] print matrix[:3] [[0, 1], [3, 7], [9, 4]] print matrix[:3][0] [[0,
matrix = \
[[0, 1],
[3, 7],
[9, 4],
[10, 3]]
print matrix[0:3][0]
[0, 1]
我也试过:
print matrix[:][0]
[0, 1]
print matrix[:3]
[[0, 1], [3, 7], [9, 4]]
print matrix[:3][0]
[[0, 1], [3, 7], [9, 4]]
我想要得到的答案是:
print matrix[code]
0, 3, 9, 10
或类似的 这在没有numpy的切片中是不可能的。您可以使用列表:
print [row[0] for row in matrix]
你所拥有的是一个列表列表,所以这里没有列的概念。有两种方法可以做到这一点,一种是(如图所示)使用列表理解 一种是使用可用于转置iterable的:
>>> list(zip(*matrix))
[(0, 3, 9, 10), (1, 7, 4, 3)]
我在这里列出了它,以便更容易显示输出。请注意,在2.x中,zip()
提供了一个列表而不是迭代器(尽管惰性版本也可用)
一般来说,如果你打算处理多个列,我会使用
zip()
,如果你只需要一列,我会使用列表理解。我不确定你为什么认为矩阵[:3]
应该打印你给出的结果-切片语法是slicable[start:stop:step]
,(默认为0,len(slicable)所以[:3]
的意思是,从0开始,在3停止。啊,这也是真的。谢谢你的更正!