我有一个数字列表,我想提取N元素作为列表,并将它们存储在另一个列表中。 例子:将列表附加到列表
list1 = [1,2,3,4,5,6,7,8,9]
resultList = [[1,2,3],[4,5,6],[7,8,9]]
我已经做了以下
def getLines(square, N):
i = 0
line = [None]*N
lines = list()
for elt in square:
line[i] = elt
i += 1
if i == N:
lines.append(line)
i = 0
return lines
为什么我总是最后一个列表三次
[[7,8,9],[7,8,9],[7,8,9]]
当我打电话的功能getLines(list1, 3)
。
我也试图消除临时列表,直接添加元素这样的:
def getLines(square, N):
i = 0
j = 0
lines = [[None]*N]*N # Need to be initialized to be able to index it.
for elt in square:
lines[i][j] = elt
j += 1
if j == N:
i += 1
j = 0
return lines
最后一组将继续出现ñ倍。有关如何解决这个问题的任何提示?
谢谢你的解释。但为什么“行”只附加最后一行“行”?我每次都在改变“行”,不应该每次都附加(在if语句中)? – Ouss4
@ Ouss4这不是你应该看到的方式。有一个关键的区别(这将是你通过解决这个问题学到的具体的东西),命名一个对象和单独分配给一个对象中的一个项目。 – Roberto
@ Ouss4试图看到它是这样的: 我有一只叫做毛茸茸的猫。 (1)我会在上面放一顶绿色的帽子。 我会在Fluffy有一个镜像点。 (2)现在我要在它上面放一个小丑帽子。 我在Fluffy会有第二个镜像点。 (3)现在,我要打扮成芭蕾舞演员。 我在Fluffy会有第三个镜像点。 (4)奇怪的是,所有的三面镜子都显示出蓬松扮成芭蕾舞演员。 ...所以为了这个工作,你需要使用三只猫(三个不同的物体),而不是改变同一只猫的帽子。 – Roberto