2016-05-13 85 views
0

所以我知道,要得到一個專欄中,我不得不寫如何將列表的後半部分列表爲列表?

a = list(zip(*f)[0]) 

和產生的將是包含在列表中的第一個元素爲f的列表。

我該如何做到每個列表獲取多個元素?我試圖

a = list(zip(*f)[1:19]) 

,但它只是返回一個列表的列表,其中內部列表是由每一個列表中的第i個元素。

回答

5

簡單的方法是不要使用zip()。相反,使用list comprehension

a = [sub[1:19] for sub in f] 

如果它實際上是你正在尋找下半年:

a = [sub[len(sub) // 2:] for sub in f] 

,其中將包括在[1, 2, 3, 4, 5]3。如果你不想包括它:

a = [sub[(len(sub) + 1) // 2:] for sub in f] 
0

你應該更喜歡@ zondo的解決方案的性能和可讀性。然而,zip基礎的解決方案是可能的,看上去就像這樣(在Python 2):

zip(*zip(*f)[1:19]) 

你不應該考慮拆包,荏苒,切片,拆包並重新荏苒中,雖然任何嚴重的代碼,這個週期; )

在Python 3中,您必須將zip結果同時投射到list,這使得它更沒有性感。

+0

@zondo有效的一點!增加了一些資格。 – schwobaseggl