Python 不使用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,

我对编程非常陌生,如果这是一个非常简单的问题,我深表歉意,但我一直在尝试在不使用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, 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停止。啊,这也是真的。谢谢你的更正!