绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
python每日一练之如何copy
2020-01-16 16:38:09
概述

今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~


需求:

将一个列表的数据复制到另一个列表中。


思路:

使用列表[:],拿不准可以调用copy模块。


实现方法:

#!/usr/bin/python#将一个列表的数据复制到另一个列表中import copya=[1,2,3,4,['a','b']]b=a    #赋值c=a[:]              #浅拷贝d=copy.copy(a)      #浅拷贝e=copy.deepcopy(a)  #深拷贝#输出print('================a改变前================')print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)a.append(5)a[4].append('c')#输出print('================a改变后================')print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)
python每日一练之如何copy

输出:

python每日一练之如何copy


python的复制,深拷贝和浅拷贝的区别

一般有三种方法,

alist=[1,2,3,["a","b"]]

1、直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

python每日一练之如何copy


2、copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的,也就是说浅拷贝它拷贝的是浅层次的数据结构(不可变元素),对象里的可变元素作为深层次的数据结构并没有被拷贝到新地址里面去,而是和原对象里的可变元素指向同一个地址,所以在新对象或原对象里对这个可变元素做修改时,两个对象是同时改变的.

浅拷贝,原对象的list元素改变的话会改变当前对象,如果当前对象中list元素改变了,也同样会影响原对象。

python每日一练之如何copy


3、深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

深拷贝就是完全跟以前就没有任何关系了,原来的对象怎么改都不会影响当前对象

python每日一练之如何copy



来源: 波波说运维


分享好友

分享这个小栈给你的朋友们,一起进步吧。

猿,妙不可言
创建时间:2019-07-05 22:23:45
分享python,及前端一些开发心得、教程。 希望能和各位大佬交朋友~
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 马国栋
    栈主

小栈成员

查看更多
  • ?
  • 栈栈
  • gamebus
  • 呵呵哒
戳我,来吐槽~