这一定是一个非常基本的问题,所以请多多包涵。我有一个这样的列表列表
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
我想访问外部列表中每个列表中的第二个值作为另一个列表
[2, 5, 8, 11]
有没有一步一步的方法来做到这一点?之前在 Matlab 中编程过很多次,我尝试过,l[:][1]
但这让我回来了[4, 5, 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]
既然你提到了 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 数组的转换步骤,但可能你想继续使用数组,而不是使用列表,因为它提供了很多额外的东西。
>>> L = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
>>> [item[1] for item in L]
[2, 5, 8, 11]