2015-02-10 24 views
-1

我有Python代碼中稱爲board int的列表。我wan't知道,如果它被修改了,所以我有一些代碼Python使列表副本,而不是引用

self.oldboard = list(self.board) 
#here is board modified, if it is possible 
if not self.oldboard == self.board: 
    #this should execute only when board was modified 

oldboard總是等於board,當我修改board,它修改oldboard。如何製作oldboard只需複製board,不參考?

回答

3

在由片方法(類似於你目前在做什麼)複製列表:

new_list_copy = old_list[:] 

你只會得到的內容的「淺」副本。這不適用於包含列表的列表(「嵌套列表」)。

如果你想複製一個嵌套列表,Python化解決方案是使用deepcopycopy模塊:

import copy 
new_list_copy = copy.deepcopy(old_list) 
+0

Downvote for what?首選欺騙目標的問題? – 2015-02-10 19:04:56

+1

我也不明白,+1的有效方法IMO。 – HavelTheGreat 2015-02-10 19:06:00

+0

可能是因爲你的第一個答案不正確,你認爲'list(self.board)'在做什麼? – 2015-02-10 19:10:29

0

整數是不可改變的。我建議您熟悉淺層和深層複製操作的概念,您可以在Python Docs here中找到這些概念。

在你的情況你最有可能需要使用deepcopy,因爲我猜你有幾個嵌套列表。

相關問題