1

这一定是一个非常基本的问题,所以请多多包涵。我有一个这样的列表列表

l = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

我想访问外部列表中每个列表中的第二个值作为另一个列表

[2, 5, 8, 11]

有没有一步一步的方法来做到这一点?之前在 Matlab 中编程过很多次,我尝试过,l[:][1]但这让我回来了[4, 5, 6]

4

3 回答 3

6

使用列表推导:

>>> lis = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
>>> [ x[1] for x in lis]
[2, 5, 8, 11]

另一种使用方式operator.itemgetter

>>> from operator import itemgetter
>>> map( itemgetter(1), lis)
[2, 5, 8, 11]
于 2013-05-29T13:58:14.627 回答
2

既然你提到了 Matlab,我将提到这样做的 numpy 方式。这实际上可能更接近您想要的,如果您要经常使用 Matlab,最好尽早开始使用 numpy:

import numpy
a = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
>>> a[:,1]
array([ 2,  5,  8, 11])

所以是的,有一个额外的 numpy 数组的转换步骤,但可能你想继续使用数组,而不是使用列表,因为它提供了很多额外的东西。

于 2013-05-30T13:14:49.863 回答
0
>>> L = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
>>> [item[1] for item in L]
[2, 5, 8, 11]
于 2013-05-29T14:00:56.693 回答