示例一:改变已经附加到b的值改变了原始列表l中的值
>>> l = [1 , 2, 3]
>>> b = []
>>> b.append(l)
>>> b[0].append(4)
>>> b
[[1, 2, 3, 4]]
>>> l
[1, 2, 3, 4]
例2:在ans后面附加l1,然后修改l1的值。但是,ans 中的值保持不变。
>>> l1 = [1, 2, 3]
>>> ans = []
>>> ans.append(l1)
>>> ans
[[1, 2, 3]]
>>> l1 = [2, 3, 4]
>>> ans
[[1, 2, 3]]
我似乎遗漏了一些关于列表可变性的基本要点。有人可以指出吗?
请您参考如下方法:
你没有改变 l1。您正在将一个新对象分配给相同的名称,这使得该名称指向一个新对象。您正在移动标签,而不是修改对象。 l1 过去指向的列表的唯一剩余引用现在是 ans[0]。
