我真的很喜欢编程,所以我很抱歉这是一个非常简单的问题,但我一直在尝试在矩阵中打印第一列而不使用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
或类似的。
答案 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]