2013-05-29 248 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數組,額外的,但可能你想繼續與數組,而不是使用一個列表,因爲它提供了很多額外的。

相關問題