繁体   English   中英

Python更新列出错误! 清单不会在while循环内更​​新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM