如何将变量的值存储在列表而不是引用中?

时间:2013-10-16 21:12:29

标签: python list variable-assignment

a = ['a']
b = ['b']
c = a
ab = [a,b]

print(c)
print(ab)

a[0] = 'c'

print(c)
print(ab)

返回:

['a']              
[['a'], ['b']]
['c']
[['c'], ['b']]

我希望c列表保持原样,即['a']。但是在我更改了列表中的元素后,它发生了变化。为什么会发生这种情况,如果有的话,我可以避免它。

2 个答案:

答案 0 :(得分:1)

您需要复制列表a并将其分配给c。现在,您只是将a的引用分配给c,这就是为什么当您修改a时,您也会修改c。有多种方法可以复制a,我认为最容易阅读的方法是使用列表构造函数:

c = list(a)

答案 1 :(得分:1)

Alek或mtitan8的解决方案可能是最方便的。要非常明确,您可以import copy然后使用c = copy.copy(a)