浅拷贝与深拷贝

1.普通赋值

例1:

a = 15
b = a
a = 16
print(b)
#例2:
lst1 = [1,2,3]
lst2 = lst1
lst1.append(4)
print(lst2)
#这个情况是lst1lst2地址相同,元素相同

2.浅拷贝

#只拷贝以及所有元素
#例:

#法一:直接.copy()拷贝

lst1 = [1,2,3]
#lst2 = lst1
lst2 = lst1.copy()
print(lst2)
lst1.append(4)
print(lst2)
print(lst1)

#法二:使用模块进行浅拷贝
import copy
#copy 模块下面有一个同名的copy方法
lst1 = [1,2,3]
lst2 = copy.copy(lst1)
lst1.append(5)
print(lst2)

3.深拷贝

将所有级别的元素统统独立拷贝一份
"每一级的所有元素统统拷贝一份,不沿用以前的数据"
#import引入copy复制模块 deepcopy深拷贝 copy浅拷贝
import copy #copy deepcopy()
lstvar = [1,2,3,[4,5,6]]
lstvar2 = copy.deepcopy(lstvar)
lstvar[-1].append(7)
print(lstvar2)
print(lstvar)
dictvar = {'a':[1,2],"b":{"c":123,"d":[7,8,9]}}
dict2 = copy.deepcopy(dictvar)
dictvar["b"]["d"].extend("ab")
print(dict2)

lstvar = [1,2,3,[4,5]]
lst2 = copy.copy(lstvar)
print(lst2)
lstvar.append(66)
print(lst2)

#在浅拷贝中把字符串这样列表的当着一级容器数据
lstvar = [1,2,3,"45"]  
lstvar2 = copy.copy(lstvar)
# lstvar[-1] = 1234   #
# print(lstvar)
# print(lstvar2)

#赋值与浅拷贝与深拷贝内存关系

浅拷贝只有一级数据时独立的,二级的数据时相同的地址的

python 基础之浅拷贝与深拷贝的更多相关文章

  1. python 进阶篇 浅拷贝与深拷贝

    阐述引用.浅拷贝和深拷贝前,首先需要要了解 Python 的世界里,一切皆对象,每个对象各包含一个 idendity.type 和 value. 引用(Reference) >>> ...

  2. Python 引用、浅拷贝、深拷贝解析

    引用 Python是动态数据类型的语言,故在对变量进行赋值时是不用制定变量类型的. 或者说,你可以把变量赋值的过程,当作是贴一个标签,去引用该数据. 看下面的例子: In [54]: a=4 In [ ...

  3. python赋值、浅拷贝、深拷贝区别

    在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出现一些问题.所以,在这里按个人的理解谈谈它们之间的区别. 一.赋值(assignment) 在<Py ...

  4. Python 赋值、浅拷贝和深拷贝

    初学Python,和C++还是有许多不同.直接赋值.浅拷贝和深拷贝,这三种拷贝对象的操作之间还是有许多的区别.Python语言的版本为2.7,在Pycharm中进行实验. 一.直接赋值 用下面的代码来 ...

  5. Python赋值、浅拷贝、深拷贝

    一.赋值(assignment) >>> a = [1, 2, 3] >>> b = a >>> print(id(a), id(b), sep= ...

  6. python中的浅拷贝,深拷贝

    直接引用,间接引用 # 1.列表存储的是索引对应值的内存地址,值会单独的开辟一个内存空间 list = ["a","b"] 内存里面存储的就是list[0],l ...

  7. python中的浅拷贝和深拷贝

    1.赋值语句 a = 'abc' b = a print id(a) print id(b) # id(a):29283464 # id(b):29283464 通过简单的复制,我们可以看到,a b其 ...

  8. 16.python中的浅拷贝和深拷贝

    在讲什么是深浅拷贝之前,我们先来看这样一个现象: a = ['scolia', 123, [], ] b = a[:] b[2].append(666) print a print b

  9. Python核心编程--浅拷贝与深拷贝

    一.问题引出浅拷贝 首先看下面代码的执行情况: a = [1, 2, 3] print('a = %s' % a) # a = [1, 2, 3] b = a print('b = %s' % b) ...

随机推荐

  1. spring 基于XML的申明式AspectJ通知的执行顺序

    spring 基于XML的申明式AspectJ通知的执行顺序 关于各种通知的执行顺序,结论:与配置文件中的申明顺序有关 1. XML文件配置说明 图片来源:<Java EE企业级应用开发教程&g ...

  2. [代码记录] C语言链表

    #开始 · 简单的创建链表 #代码 #include<conio.h> #include<stdio.h> #include<stdlib.h> struct St ...

  3. python3 利用VideoCapture模块读取多个相机名称

    模块pip安装地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#videocapture

  4. BZOJ - 2038 小Z的袜子(普通莫队)

    题目链接:小Z的袜子 题意:$n$只袜子,$m$个询问,每次回答有多大概率在$[L,R]$区间内抽到两只颜色相同的袜子 思路:普通莫队,如果两个询问左端点在一个块内,则按询问右端点排序,否则按照所在块 ...

  5. MySQL导出数据到文件报错

    执行如下语句: mysql> select * from users into outfile "F:\Develop\MySQL57\Uploads\users.txt" ...

  6. 【PAT甲级】1074 Reversing Linked List (25 分)

    题意: 输入链表头结点的地址(五位的字符串)和两个正整数N和K(N<=100000,K<=N),接着输入N行数据,每行包括结点的地址,结点的数据和下一个结点的地址.输出每K个结点局部反转的 ...

  7. Django ORM 常用的13个方法

    介绍一个可以以py脚本方式运行ORM操作的方法: 可在项目内新建个py文件,复制项目内manage.py文件中的以下代码: if __name__ == "__main__": o ...

  8. C语言:计算输出给定数组中每相邻两个元素的平均值的平方根之和。

    //计算输出给定数组中每相邻两个元素的平均值的平方根之和. #include <stdio.h> #include <math.h> ]) { double a,b,s=0.0 ...

  9. redhat 7.6安装kvm

    安装 yum install qemu-kvm libvirt virt-install virt-manager openssh-askpass yum install qemu-kvm-tools ...

  10. Java电子书高清PDF集合免费下载

    这份资源是我经过多年积累才整理归类出来,有很多电子书我觉质量还是非常高的,由于电子书太多我也是用业余时间挑着看的,这么多资源自己保存着也是浪费,就想着现在把资源分享出来,希望能真正帮到大家: 资源我都 ...