cell=[1,2,3,4];
cell_copy=cell.copy()
print(cell_copy))
利用python里的copy方法可以对已知cell进行复制
如果对cell_copy中的元素进行改变 是否会影响cell中的元素
cell=[1,2,3,4];
cell_copy=cell.copy()
cell_copy[0]=8
print(cell_copy,cell)
更改cell_copy[0]=8
由结果可知cell并没有花生变化
那是否意味着cell_copy与cell没关联呢
看下面一个例子:
cell=[[1,2],3,4];
cell_copy=cell.copy()
print(cell_copy)
cell_copy[0][0]=8
print(cell_copy,cell)
结果可知 copy并简单只是复制cell中的元素 cell和cell_copy在有着联系 在上述情况改边cell_copy值 cell中元素也会发生改变
同理 改变cell值cell_copy中元素也会改变
上述代码在计算机内部示意图:
copy实际上是将b的指向地址指向a的指向地址
当a或者b中指向改变时
开辟一个新内存0088 存储元素8
b[0][0]改变成8时 即0088地址指向改为0068
因为a、b的0088指针指向相同
所以当a或b改变时 两个中元素同时改变
由此时可知 copy只是浅拷贝 只拷贝了cell的一层地址
下面看下一个例子
a=1
b=a
b=2
![](https://i-blog.csdnimg.cn/blog_migrate/b2fbb19cf00026759ecd9fc0de52a5a9.png)
注意比较cell_copy=cell
cell=[[1,2],3,4];
cell_copy=cell.copy()
cell_=cell
print(cell_)
print(cell_copy)
cell_[1]=7
print(cell_,cell)
cell_copy[2]=12
print(cell_copy,cell)
cell_copy[0][0]=8
print(cell_copy,cell)
上面那个简单的例子已经解释了cell_copy=cell
cell_=cell相当于指向了cell指向的整体地址
所以只要cell cell_其中任意元素改变 同相当两个指向改变了 这个时候改变元素值 不会在开辟一个新的内存地址
cell和cell_还是同时指向了[[1,2],3,'from a']的整体地址
以上就是拷贝的部分知识!!!
第一次写博客
真鸡儿爽
反正也没人看
!!!