2017-01-26 26 views
3

我在我的程序中遇到了一些變量問題。我需要在循環評估期間保留兩個或三個版本的列表。例如:如何在Python中創建不可變列表?

x=[0] 
y=[0] 
while True: 
     y=x 
     x[0]+=1 
     print (y,x)  
     input() 

當我按下回車顯示[1] [1]; [2] [2]; [3] [3]...但我需要保持名單的先前狀態的變量:[0] [1]; [1] [2]; [2] [3] ...

應該採取什麼代碼是什麼?

+3

@Idos,回答題,但不是真的這個問題。 – glibdud

回答

2

你需要,而不是複製參考價值,你可以這樣做:

y=x[:] 

相反

y = x 

您也可以使用複製的lib:

import copy 
new_list = copy.copy(old_list) 

如果該列表包含對象,並且您想要複製它們,請使用generic copy.deepcopy()

new_list = copy.deepcopy(old_list) 

在蟒蛇3.x中,你可以這樣做:

newlist = old_list.copy() 

您可以在醜陋的模式做得一樣好:)

new_list = list(''.join(my_list)) 
+0

在我的一個具有嵌套列表的實際程序中,只有deepcopy()纔有所作爲。像:y = deepcopy(x)。 – user7433465

5

其實你不需要一個不可變的列表。你真正需要的是創建真正的副本的列表,而不是僅僅複製引用。因此,我認爲回答了你的問題是:

y = list(x) 

而不是y = x

相關問題