返回顶部
首页 > 资讯 > 后端开发 > Python >python3之深浅copy对比
  • 721
分享到

python3之深浅copy对比

深浅copy 2023-01-31 08:01:29 721人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

一、赋值对比1、列表l1 = [1,2,3] l2 = l1 l1.append('a') print(l1,l2)               #[1, 2, 3, 'a'] [1, 2, 3, 'a'] print(id(l1),id(

一、赋值对比

1、列表

l1 = [1,2,3]
l2 = l1
l1.append('a')
print(l1,l2)               #[1, 2, 3, 'a'] [1, 2, 3, 'a']
print(id(l1),id(l2))          #43499848 43499848
#可以看到两个列表的值以及id值相同,对应的是同一个内存地址

2、字典

dic = {'name':'barry'}
dic1 = dic
dic['age'] = 18
print(dic,dic1)            #{'name': 'barry', 'age': 18} {'name': 'barry', 'age': 18}
print(id(dic),id(dic1))       #31157344 31157344
#可以看到两个字典的值以及id值相同,对应的是同一个内存地址


3、字符串

s = 'alex'
s1 = s
s2 = s.replace('a','A')
print(s,s1,s2)                  #alex alex Alex
print(id(s),id(s1),id(s2))           #31040208 31040208 31040376
#赋值是同一个内存地址,替换字符串后的变量s2是另外的地址


二、深浅copy

1、浅copy

对于浅copy来说,第一层创建的是新的内存地址。而从第二层开始,指向的是同一个内存地址,所有,对于第二层以及更深的层数来说,保持一致性。

# 1、普通浅copy

l1 = [1,2,3,4]
l2 = l1.copy()
l1.append('a')
print(l1,l2)                     #[1, 2, 3, 4, 'a'] [1, 2, 3, 4]
print(id(l1),id(l2))             #37077320 37078664
#id内存地址不一样,创建了两个地址空间,一个改变,另一个不会变化

# 2、嵌套浅copy



l1 = [1,[22,33,44],3,4,]
l2 = l1.copy()
l1[1].append('a')
print(l1,id(l1),l2,id(l2))       #[1, [22, 33, 44, 'a'], 3, 4]  [1, [22, 33, 44, 'a'], 3, 4]
print(id(l1),id(l2))              #43173512 43173256
print(id(l1[1]),id(l2[1]))       #43172168 43172168
# 第一层都是独立的的。从第二层开始都是是公用的,改一个都会变。
l1 = [1,[22,33,44],3,4,]
l2 = l1.copy()
l1[0] = 111
print(l1,l2)                     #[111, [22, 33, 44], 3, 4] [1, [22, 33, 44], 3, 4]
print(id(l1),id(l2))             #43370120 43369864
# 可以看到第一层都是独立的,改一个不影响另一个的结果

2、 深copy.deepcopy()

对于深copy来说,两个是完全独立的,改变任意一个的元素(无论是多少层),另一个绝不会改变。


import copy
l1 = [1,[22,33,44],3,4,]
l2 = copy.deepcopy(l1)
# 改变第一层
l1[0] = 111
print(l1,l2)                    #[111, [22, 33, 44], 3, 4] [1, [22, 33, 44], 3, 4]
print(id(l1),id(l2))            #43238536 43239048
# 改变第二层
l1[1].append('a')
print(l1,l2)                   # [111, [22, 33, 44, 'a'], 3, 4] [1, [22, 33, 44], 3, 4]
print(id(l1),id(l2))           #43238536 43239048



--结束END--

本文标题: python3之深浅copy对比

本文链接: https://lsjlt.com/news/192539.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python3之深浅copy对比
    一、赋值对比1、列表l1 = [1,2,3] l2 = l1 l1.append('a') print(l1,l2)               #[1, 2, 3, 'a'] [1, 2, 3, 'a'] print(id(l1),id(...
    99+
    2023-01-31
    深浅 copy
  • 深浅copy
    一. 赋值运算 1 s1 = [1, 2, 3, ["barry", "alex"]] 2 s2 = s1 3 4 s1[0] = 111 5 print(s1) # [111, 2, 3, ['barry', 'alex']]...
    99+
    2023-01-30
    深浅 copy
  • Python深浅copy
    深copy和浅copy 深copy:不仅copy变量的指针,还copy指针指向的数据 这里需要提到一个新名词,指针:变量和内存中数据的一种引用关系。变量通过指针对应到内存中的数据 在列表、元组、字典、集合中可以使用深copy li...
    99+
    2023-01-31
    深浅 Python copy
  • JavaScript中的深拷贝(deep copy)和浅拷贝(shallow copy)
    聚沙成塔·每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造...
    99+
    2023-10-19
    javascript 开发语言 ecmascript
  • python-浅拷贝(copy)与深拷贝(deepcopy)
    一:对象与元素、可变与不可变:        (1)对象:对象有存储地址id【就好像某个地址的快递仓库】,对象中的元素都有一个地址id【就像仓库的某某货架】        (2)对象与对象的元素:(对象)或(对象中的元素)有不同的类型【数字...
    99+
    2023-09-03
    数学建模
  • python3-列表的深浅复制
    # Auther: Aaron Fannames = ["aaron", "alex", "james", "meihengfan"]#复制一份列表#浅复制 (注意,这只是一个浅复制,只能复制第一层列表里面的东西,如果列表里面还有一层列表,...
    99+
    2023-01-31
    深浅 列表
  • Python3 lambda函数的深入浅
    我们常常看到一个这样的表达式  可能会一头雾水不知道怎么计算 最基本的理解就是 def A(x): return x+1 但是理解程序不会将一个表达式在转为函数的,因为lambda函数设计出来就是 简化def的。 其实很简单 我们可以这...
    99+
    2023-01-31
    函数 lambda
  • Rust中的Copy和Clone对比分析
    目录1.Copy和Clone2. Copytrait3. Clonetrait4. Copy和Clonetrait之间的区别1.Copy和Clone R...
    99+
    2023-05-17
    Rust中的Copy和Clone Rust Copy Clone区别
  • Python3之enumrate和range对比及示例分析
    Python3之enumrate和range对比及示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python3之enumrate和range对比及示例前言在Python...
    99+
    2023-06-02
  • python之深浅拷贝
    深浅拷贝对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。import copy# ######### 数字、字符串 #########n1 = 123# n1 = "age 10"print(id(n...
    99+
    2023-01-31
    深浅 python
  • java对象拷贝之深拷贝与浅拷贝
    要实现对象拷贝必须实现一个Cloneable接口,如果不实现这个接口就会产生一个CloneNotSupportedException异常。其实这个接口一个方法都没有,因此这类接口常被称作标记接口。Object 中有一个clone() 方法实...
    99+
    2016-12-31
    java入门 java 对象 深拷贝 浅拷贝
  • Python3 基础(赋值与生深浅拷贝
    一 python的变量与以及存储变量是对内存的以及地址的抽象,对于python而言python的一切变量都是对象,变量的存储采用了引用语义的方式,存储的只是一个变量所在值的内存地址,而不是这个变量的本身 。 引用语义:在python中,变...
    99+
    2023-01-31
    赋值 深浅 基础
  • 图解Python中浅拷贝copy()和深拷贝deepcopy()的区别
    关于浅拷贝和深拷贝想必大家在学习中遇到很多次,这也是面试中常常被问到的问题,借由这个时间,整理一下浅拷贝和深拷贝的关系 先从一个简单的例子入手吧 定义一个数组的嵌套结构 a = [1...
    99+
    2023-05-19
    Python 浅拷贝copy() Python 深拷贝deepcopy()
  • python3学习之对象
    #过程编程----函数编程(代码复用高)--面向对象 #python 支持  函数式+面向对象 编程 # def mail(email,message): #     print("sendsend") #     return Tru...
    99+
    2023-01-31
    对象
  • 浅谈java对象的比较
    目录1、元素的比较2、类的比较3、比较方法3.1 重写equals方法3.2 基于Comparble接口类的比较3.3 基于比较器比较基于比较器比较:Comparator接口3.4 ...
    99+
    2024-04-02
  • python3 实现对比conf 文件差
    用法: ./conf.py  nginx1.conf  nginx2.conf > diff.html conf.py #!/usr/bin/python import difflib import sys ####   Usag...
    99+
    2023-01-31
    文件 conf
  • 浅谈MySQL之浅入深出页原理
    目录一、页的概览二、Infimum 和 Supremum三、使用Page Directory四、页的真实面貌4.1、File Header4.2、Page Header4.3、Infimum & Suprem...
    99+
    2022-05-19
    MySQL 页原理
  • 深入浅析Java中对象的深复制与浅复制
    本篇文章为大家展示了深入浅析Java中对象的深复制与浅复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 Java对象深复制与浅复制实例详解我们在遇到一些业务场景的时候经常需要对对象进行复...
    99+
    2023-05-31
    java 对象 中对
  • PostgreSQL VACUUM 之深入浅出 (二)
    AUTOVACUUM AUTOVACUUM 简介 PostgreSQL 提供了 AUTOVACUUM 的机制。 autovacuum 不仅会自动进行 VACUUM,也会自动进行 ANALYZE,以分析统计信息用于执行计划。 在 postg...
    99+
    2021-08-13
    PostgreSQL VACUUM 之深入浅出 (二)
  • PostgreSQL VACUUM 之深入浅出 (三)
    VACUUM 相关参数 对 VACUUM 有了一定的了解之后,下面系统介绍下 VACUUM 相关参数。 VACUUM 相关参数主要分为三大类。 第一类 与资源相关参数 #----------------------------- # RE...
    99+
    2020-02-23
    PostgreSQL VACUUM 之深入浅出 (三)
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作