2017-03-27 101 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是的。但我更喜欢“不规则”输入,否则不需要输入列表。 –