2024-03-28 09:12:16 发布
网友
我在程序中遇到了一些变量的问题。我需要保留在循环求值期间更改的列表的两个或三个版本。例如:
x=[0] y=[0] while True: y=x x[0]+=1 print (y,x) input()
当我按下Enter时,它会显示[1] [1]; [2] [2]; [3] [3]...,但我需要在一个变量中保留列表的前一个状态:[0] [1]; [1] [2]; [2] [3] ...
[1] [1]; [2] [2]; [3] [3]...
[0] [1]; [1] [2]; [2] [3] ...
代码应该是什么?在
实际上你不需要一个不变的列表。您真正需要的是创建真正的复制列表,而不仅仅是复制引用。所以我认为你的问题的答案是:
y = list(x)
而不是y = x。在
y = x
您需要复制值而不是引用,可以执行以下操作:
y=x[:]
取而代之的是
也可以使用复制库:
import copy new_list = copy.copy(old_list)
如果列表中包含对象并且您也希望复制它们,请使用泛型复制.deepcopy()
new_list = copy.deepcopy(old_list)
在python 3.x中,可以执行以下操作:
newlist = old_list.copy()
你也可以在丑陋模式下完成:)
new_list = list(''.join(my_list))
实际上你不需要一个不变的列表。您真正需要的是创建真正的复制列表,而不仅仅是复制引用。所以我认为你的问题的答案是:
而不是
y = x
。在您需要复制值而不是引用,可以执行以下操作:
取而代之的是
^{pr2}$也可以使用复制库:
如果列表中包含对象并且您也希望复制它们,请使用泛型复制.deepcopy()
在python 3.x中,可以执行以下操作:
你也可以在丑陋模式下完成:)
相关问题 更多 >
编程相关推荐