我有一个清单:
list1 = [0,2,4,6]
这里我想在list1中添加数字2并在新列表中创建一个子列表,并使用第一个子列表创建另一个子列表以创建新的子列表。 我想在list1的帮助下创建一个新的列表,仅使用list comprehentions,也可以单行创建。
newList = [[2,4,6,8],[4,6,8,10],[6,8,10,12]]
例如:
newList = [a+2 for a in list1]
但是使用这段代码,我只能在newList中创建一个列表。但是我想在newList中使用list comprehensions相应地创建3个子列表。
答案 0 :(得分: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]]
与问题中的不同,但Jim同时编辑了它(为了正确),我个人更喜欢输入列表没有内部逻辑(否则我们可能只想使用range
解决这个问题。)
请注意,我们只能使用列表推导来完成它,因为我们可以从初始输入列表中推断出子列表。通常,使用列表推导来计算前一个元素的当前元素是不可能的。在这种情况下,您必须切换到“经典”for
循环。