这一定是一个非常基本的问题,所以请耐心等待。我有一个像这样的列表列表
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
我想访问外部列表中每个列表中的第二个值作为另一个列表
[2, 5, 8, 11]
这样做有一步吗?之前在Matlab中进行过很多编程,我尝试了l[:][1]
,但这会让我回归[4, 5, 6]
答案 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]