我存储在wk
Python列表分配错误
我运行下面的代码字符串列表。
n_wk=wk
for i in range(10):
if some condition:
n_wk[i]='new'
我想保留wk
值。但是,wk
也随着n_wk
一起更改。任何人都可以指出这个错误吗?
我存储在wk
Python列表分配错误
我运行下面的代码字符串列表。
n_wk=wk
for i in range(10):
if some condition:
n_wk[i]='new'
我想保留wk
值。但是,wk
也随着n_wk
一起更改。任何人都可以指出这个错误吗?
创建复制wk
的:
n_wk = list(wk)
或使用:
n_wk = wk[:]
这两者的复制指数到一个新的列表。
工作完美。为什么上面的代码给出错误? – Zero 2013-03-25 18:30:35
因为分配并不总是复制。只有基本类型被复制,列表,字典和其他对象通过引用被复制,因此它们指向相同的对象。以上内容也只适用于列表和类似结构,请考虑更复杂的对象:http://docs.python.org/2/library/copy.html – 2013-03-25 18:31:27
@StjepanBakrac:赋值*从不*拷贝。通常你会重新分配一个新值。 – 2013-03-25 18:32:09
'n_wk'和'wk'实际上就是这样的列表。您需要明确复制列表。 – thegrinner 2013-03-25 18:30:12