0
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']。但是在我更改了 a 列表中的元素后,它发生了变化。为什么会发生这种情况,如果有的话,我该如何避免它。

4

2 回答 2

1

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

于 2013-10-16T21:47:31.323 回答
1

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

c = list(a)
于 2013-10-16T21:45:27.297 回答