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