在没有numpy的矩阵中打印列

时间:2013-04-10 22:55:00

标签: 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, 1], [3, 7], [9, 4]]

我想要达到的答案是:

print matrix[code]
0, 3, 9, 10

或类似的。

2 个答案:

答案 0 :(得分:5)

您拥有的是列表清单 - 因此没有列的概念。有两种方法可以做到这一点,一种是(如Pavel Anossov's answer所示)是使用列表理解。

一种是使用zip(),它可用于转置迭代:

>>> list(zip(*matrix))
[(0, 3, 9, 10), (1, 7, 4, 3)]

我在这里列出了一个列表,以便更容易地显示输出。注意在2.x中,zip()给出了一个列表而不是迭代器(尽管惰性版本可用作itertools.izip())。

一般情况下,如果您计划使用多个列,我会使用zip(),如果您只需要一个列,我会使用列表理解。

答案 1 :(得分:3)

切片没有numpy是不可能的。您可以使用列表理解:

print [row[0] for row in matrix]