ITPub博客

首页 > > > python每日一练之如何copy

python每日一练之如何copy

作者:54xx 时间:2020-01-16 16:38:09 0 删除 编辑
概述

今天主要来看看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



来源: 波波说运维


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1976/viewspace-3171278/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: script代码问题
请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    226
  • 访问量
    1612