Python 的内存机制是引用计数。对 a=[1,2,3],实际上是在内存里有一个 [1,2,3],然后增添一个引用, reference_count+1,指向 a;
b=a,则 [1,2,3] 的 reference_count 再+1,指向 b
b.remove(1) 修改的是它所指向的对象:由[1,2,3]变为[2,3];而 a 和 b 指向的是同一个元素,都显示[2,3]
---
顺便说一下 @
kendetrics 的拷贝是怎么回事
Python 里有两种拷贝方式, shallow copy 和 deep copy
如果你想 a 和 b 完全隔离开,用这种方式:
import copy
b=copy.deepcopy(a)
如果你用 b=a[:] 这种方式,实际上还是浅拷贝,和 b=list(a) 工厂函数效果是一样的。
这样的话用 b.remove(1) ,a 不受影响;这是因为 a,b 里面都是数字,是 immutable 不可变对象;
如果这样,a=[1,2,[3,4]],b=a[:],你修改 a[2].append(5),则 a=[1,2,[3,4,5]],b 也同样变化, b=[1,2,[3,4,5]],因为 a[2]是一个 list,是 mutable 可变对象