這一定是一個非常基本的問題,請耐心等待。我有這樣如何訪問另一個列表中每個列表的第n個元素?
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
我要外列表中訪問各列表中的第二個值作爲另一個列表
[2, 5, 8, 11]
是否有這樣做的一個步驟的方式列出的名單?在Matlab已經編程之前相當多,我想l[:][1]
但返回我[4, 5, 6]
這一定是一個非常基本的問題,請耐心等待。我有這樣如何訪問另一個列表中每個列表的第n個元素?
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]
>>> L = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
>>> [item[1] for item in L]
[2, 5, 8, 11]
既然你提到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數組,額外的,但可能你想繼續與數組,而不是使用一個列表,因爲它提供了很多額外的。
打了幾秒鐘。好一個。 :) –