异常列表行为

时间:2013-02-16 18:06:23

标签: python

我正在解决一些问题并遇到了这个问题。

Python代码

row=[]
col=[]
init=[-1,-1]

现在我将此init附加到rowcol

row.append(init)
row.append(init)

col.append(init)
col.append(init)

因此row = [[-1,-1],[-1,-1]]col = [[-1,-1],[-1,-1]]

现在,当我更改init[0] = 9时,rowcol成为了row = [[9,-1],[9,-1]] col = [[9,-1],[9,-1]]和{{1}}

2 个答案:

答案 0 :(得分:6)

这是因为您反复存储对象init的相同引用。所以当你修改对象时,每个人都会看到它。

您可以尝试append列表的副本。例如,一种方式可能是:

row.append(list(init))

clone a list的方法不止一种。

答案 1 :(得分:1)