2016-06-01 160 views
0

我有一個元組列表這種格式的列表:遍歷元組

my_list = [(1,4),(3,6),(10,7)] 

我要打印的每個元組的第二個元素:

4,6,7 

我可以訪問這些值:

my_list[0][1] 
my_list[1][1] 
my_list[2][1] 

但是,這並不是任何合理的尺寸列表一個合理的方法,就目前而言,使用列表理解這樣做:

[x[1] for x in my_list ] 

是否有任何解決方案不暗示使用循環? 類似:

my_list[:][1] 

我試圖這樣做的,但得到:

(3, 6) 
+1

提到如果元素的順序不在於你可以試試這個'字典(my_list).values()'。 – AceLearn

回答

2

[:]剛剛創建列表的副本,所以[1]指數複製了。不,在NumPy數組之外,技術上無法避免循環。循環可以用C代碼完成,像map()這樣的函數,但是無論如何將會有一個循環。

使用map()例如應用可調用的每個元素在你的輸入列表:

map(lambda nested: nested[1], my_list) 

from operator import itemgetter 

map(itemgetter(1), my_list) 

在Python 2同時工作,在Python 3,你需要換行map()通話在調用list()來驅動迭代。

無論哪種方式,我發現列表理解在這裏更清晰。

+0

在numpy數組的情況下它是不同的解決方案嗎? –

+1

@LuisRamonRamirezRodriguez:Numpy數組支持多維,你可以將它作爲矩陣中的一列:'matrix [:,1]'。請參閱[NumPy快速入門](https://docs.scipy.org/doc/numpy-dev/user/quickstart.html#indexing-slicing-and-iterating) –

1

正如python get list of tuples first index

嘗試zip

my_list = [(1,4),(3,6),(10,7)] 

print zip(*my_list)[1] 

(4, 6, 7) 
+1

請解釋'zip()'包含循環和完全產生兩個獨立的元組,其中一個你再次丟棄。 –