[英]Python updating lists error! List will not update inside while loop
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代码,我尝试获取“单元格”列表的更新并将每个新值存储到“ col”列表中。 但是,如果您在Python中运行此代码,则打印出的“单元格”的值正是我想要的值,但是当我打印出“ col”时,它只会重复重复最后一个不需要的值,超出“单元格”的范围值。 我不认为这是一个范围问题,因为while()不会在Python中创建新的范围。
请帮忙!! 我可能在代码中找不到这可能是一个非常愚蠢的错误!
您将cell的四个副本附加到col 。 请注意,您没有复制cell的值:您复制了对象引用! 因此,您在col中有四个指向原始单元格的指针。 每次更新cell时 ,更新都会影响每个引用……它们都指向同一个对象。
您似乎想要复制一个单元格 。 只需更改一行并要求一个新列表:
col.append(list(cell))
现在您将获得所需的输出:
[0, 1]
[1, 1]
[2, 1]
[3, 1]
[[0, 1], [1, 1], [2, 1], [3, 1]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.