如何访问另一个列表中每个列表的第n个元素?

时间:2013-05-29 13:56:17

标签: python list indexing elements

这一定是一个非常基本的问题,所以请耐心等待。我有一个像这样的列表列表

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

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

[2, 5, 8, 11]

这样做有一步吗?之前在Matlab中进行过很多编程,我尝试了l[:][1],但这会让我回归[4, 5, 6]

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分:2)

既然你提到了Matlab,我就会提到这样做的笨拙方式。这实际上可能更接近你想要的东西,如果你要像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数组更多,但是你可能希望继续使用数组,而不是使用列表,因为它提供了很多附加功能。

答案 2 :(得分:0)

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