2017-03-27 98 views
-1

我有一個列表:列表綜合列表中創建多個子列表

list1 = [0,2,4,6] 

在這裏我要2號添加到列表1,並創建新的列表中的子列表,並使用第一個創建另一個子列表子列表來創建新的子列表。 我想在list1中創建一個新的列表,只有列表comprehentions的幫助,這也在單行中。

newList = [[2,4,6,8],[4,6,8,10],[6,8,10,12]] 

例如:

newList = [a+2 for a in list1] 

但與此代碼我可以只創建1名單內newList.but我想在newList只使用列表解析創建相應的子表3。

+1

你使用Python 2還是Python 3?你已經標記了兩個 – khelwood

回答

3

鑑於

list1 = [0,2,5,6] 

您可以創建使用2所嵌套列表理解列表內3所列出:

newlist = [[x+2*(i+1) for x in list1] for i in range(3)] 

結果

[[2, 4, 7, 8], [4, 6, 9, 10], [6, 8, 11, 12]] 

是從一個在問題的不同,但吉姆在此期間進行了編輯(爲了正確),並且我個人更喜歡輸入列表沒有內部最終邏輯(否則我們可能會試圖僅使用range來解決這個問題)。

請注意,我們只能使用列表理解來完成它,因爲我們可以從初始輸入列表中推導出子列表。一般來說,使用列表理解來計算前一個元素是不可能的。在這種情況下,您必須切換到「經典」for循環。

+1

我猜測是OP在原始列表中犯了一個錯誤。它看起來應該是'[0,2,4,6]' –

+1

@JimFasarakisHilliard是的。但我更喜歡「不規則」輸入,否則不需要輸入列表。 –