grid_height = 4
grid_width = 5
cell = [0, 1]
OFFSETS = (1, 0)
col = []
while (cell[0] < grid_height) and (cell[1] < grid_width):
print cell
col.append(cell)
cell[0] += OFFSETS[0]
cell[1] += OFFSETS[1]
print col
因此,对于这个Python代码,我尝试更新&#34; cell&#34;列出并将每个新值存储到列表中#col;#34;。但是,如果您在Python中运行此代码,那么&#34; cell&#34;打印输出正好是我想要的值,但是当我打印出&#34; col&#34;时,它只是不断重复&#34;的最后一个不需要的超出范围值的值。细胞&#34 ;.我不认为这是一个范围问题,因为while()不会在Python中创建新的范围。
请帮忙!!这可能是一个非常愚蠢的错误,我无法在我的代码中找到!!
答案 0 :(得分:3)
您将单元格的四个副本附加到 col 。请注意,您没有复制单元格的值:您复制了对象引用!因此,您有四个指向 col 中原始单元格的指针。每次更新单元格时,更新都会影响每个引用...它们都指向同一个对象。
您似乎想要一份单元格。只需更改一行并要求新列表:
col.append(list(cell))
现在您可以获得所需的输出:
[0, 1]
[1, 1]
[2, 1]
[3, 1]
[[0, 1], [1, 1], [2, 1], [3, 1]]