Python 3.4这个列表在做什么?

时间:2015-02-18 12:57:15

标签: python list python-3.x

我的代码是:

L = [1, 2, 3, 4]
L2 = L
L2[2] = 'a'
L

这给了我:

[1, 2, 'a', 4]
当我与L2合作为什么L已经改变时,有人可以解释一下吗?

1 个答案:

答案 0 :(得分:3)

LL2指的是相同的内存位置。

以下示例介绍如何将列表变量复制到另一个变量。

>> x = [1,2,3]
>>> id(x)
141910924
>>> y = x
>>> id(y)
141910924
>>> z = list(x)
>>> id(z)
141676844
>>> x.append(10)
>>> x
[1, 2, 3, 10]
>>> y
[1, 2, 3, 10]
>>> z
[1, 2, 3]

当我们想要将列表值分配给其他变量时,请使用复制和深度复制,例如

>>> import copy
>>> x = [1,2,3, [4,5]]
>>> y = copy.copy(x)
>>> id(x)
141913324
>>> id(y)
139369964
>>> x.append(10)
>>> x
[1, 2, 3, [4, 5], 10]
>>> y
[1, 2, 3, [4, 5]]
>>> x[3].append(20)
>>> x
[1, 2, 3, [4, 5, 20], 10]
>>> y
[1, 2, 3, [4, 5, 20]]
>>> z = copy.deepcopy(x)
>>> z
[1, 2, 3, [4, 5, 20], 10]
>>> x[3].append(50)
>>> x
[1, 2, 3, [4, 5, 20, 50], 10]
>>> z
[1, 2, 3, [4, 5, 20], 10]