2013-05-29 200 views
1

这一定是一个非常基本的问题,请耐心等待。我有这样如何访问另一个列表中每个列表的第n个元素?

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

我要外列表中访问各列表中的第二个值作为另一个列表

[2, 5, 8, 11] 

是否有这样做的一个步骤的方式列出的名单?在Matlab已经编程之前相当多,我想l[:][1]但返回我[4, 5, 6]

回答

5

使用列表理解:

>>> 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

打了几秒钟。好一个。 :) –

0
>>> L = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 
>>> [item[1] for item in L] 
[2, 5, 8, 11] 
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数组,额外的,但可能你想继续与数组,而不是使用一个列表,因为它提供了很多额外的。

相关问题