temp=board
不会成为新的董事会。它使temp
变量引用与board
的列表非常相似。所以改变temp[i][j]
也改变了board[i][j]
。
进行复印,使用
import copy
temp=copy.deepcopy(board)
注意temp=board[:]
使得temp
是指一个新的列表(比board
不同,但内容(即在列表中的列表)仍相同:
In [158]: board=[[1,2],[3,4]]
In [159]: temp=board[:]
修改temp
修改board
太:
In [161]: temp[1][0]=100
In [162]: temp
Out[162]: [[1, 2], [100, 4]]
In [163]: board
Out[163]: [[1, 2], [100, 4]]
id
显示对象的内存地址。这表明temp
和board
是不同的列表:
In [172]: id(temp)
Out[172]: 176446508
In [173]: id(board)
Out[173]: 178068780 # The ids don't match
但是,这表明里面temp
第二个列表里面board
非常相同的列表:
In [174]: id(temp[1])
Out[174]: 178827948
In [175]: id(board[1])
Out[175]: 178827948 # The ids are the same
但是如果你使用copy.deepcopy
,那么列表中的列表也会被复制,如果修改temp
将使board
保持不变,则这就是您需要的内容:
In [164]: import copy
In [165]: board=[[1,2],[3,4]]
In [166]: temp=copy.deepcopy(board)
In [167]: temp[1][0]=100
In [168]: temp
Out[168]: [[1, 2], [100, 4]]
In [169]: board
Out[169]: [[1, 2], [3, 4]]
这将有助于查看程序的其余部分。 – 2010-10-19 02:48:35
欢迎来到Python。快速提示:'(i,j)= slot'中'i,j'附近的括号不是必需的。 – 2010-10-19 02:51:15
谢谢您的建议和欢迎。 – Roughmar 2010-10-20 13:56:41