2

我对编程真的很陌生,所以如果这是一个非常简单的问题,我深表歉意,但我一直在尝试在不使用 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

或类似的。

4

2 回答 2

6

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

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

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

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

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

于 2013-04-10T22:57:38.610 回答
3

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

print [row[0] for row in matrix]
于 2013-04-10T22:56:42.193 回答