2013-03-25 77 views
1

我存储在wkPython列表分配错误

我运行下面的代码字符串列表。

n_wk=wk 
for i in range(10): 
    if some condition: 
     n_wk[i]='new' 

我想保留wk值。但是,wk也随着n_wk一起更改。任何人都可以指出这个错误吗?

+1

'n_wk'和'wk'实际上就是这样的列表。您需要明确复制列表。 – thegrinner 2013-03-25 18:30:12

回答

5

创建复制wk的:

n_wk = list(wk) 

或使用:

n_wk = wk[:] 

这两者的复制指数到一个新的列表。

+0

工作完美。为什么上面的代码给出错误? – Zero 2013-03-25 18:30:35

+2

因为分配并不总是复制。只有基本类型被复制,列表,字典和其他对象通过引用被复制,因此它们指向相同的对象。以上内容也只适用于列表和类似结构,请考虑更复杂的对象:http://docs.python.org/2/library/copy.html – 2013-03-25 18:31:27

+0

@StjepanBakrac:赋值*从不*拷贝。通常你会重新分配一个新值。 – 2013-03-25 18:32:09