展开

关键词

Python、浅

仅供学习参考,转载请注明出处 深、浅 1. 浅是对于一个对象的顶层 通俗的理解是:了引用,并没有内容 ? ,虽然 b = a 的确属于浅的一种,但是浅 c = copy.copy(a) 也是属于浅的另一种,那么为什么内存不一样呢? 其实浅只是最上面的那一层数据,其实也是会生成一个新的变量,此时内存就会不一样。 进一步理解深 从前面浅的例子中,我们来看看使用深有什么变化。 注意点 浅对不可变类型和可变类型的copy不同 copy.copy对于可变类型,会进行浅 copy.copy对于不可变类型,不会,仅仅是指向 # list可变类型 In [34]: a

41130

python

Python 直接赋值、浅和深度解析 牛客网题目:What gets printed?() 直接赋值:其实就是对象的引用(别名)。 浅(copy):父对象,不会对象的内部的子对象。 深(deepcopy): copy 模块的 deepcopy 方法,完全了父对象及其子对象。 # 浅 >>>a = {1: [1,2,3]} >>> b = a.copy() >>> a, b ({1: [1, 2, 3]}, {1: [1, 2, 3]}) >>> a[1].append( 2、b = a.copy(): 浅, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。 ? b = copy.deepcopy(a): 深度, a 和 b 完全了父对象及其子对象,两者是完全独立的。 ?

31820
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python

    python和浅问题: 什么是深? (个人理解)深就是将原有的数据一模一样的一份,然后存到另一个地址中,而不是引用地址 什么是浅? (个人理解)就是引用地址 (1)用等于号的都属于浅 ? (2)导入copy包用deepcopy进行深 ? (3)copy包中的copy方法有点特殊     copy.copy方法只能对第一层数据进行深,但是如果要是被的数据是不可变的,例如元祖则会根据判断进行浅 ? ?

    19120

    python和深

    python中的赋值是按引用来传递的,如果不是赋值而是,那就需要用到copy模块了,这就不得不谈浅和深了。 浅copy() #! is my_list: False       dup == my_list: True dup[0] is my_list[0]: False dup[0] == my_list[0]: True 浅和深都是 ,那么随便都行。 浅和深都是为后续操作而区分的。 对于深来说没有任何改变,因为深是新建一个列表,把原列表的内容原封不动过来,过来以后它和原列表一模一样,至于原列表后来做了什么改变根本不关它的事。形象理解就是浅是活的,深是死的。

    14940

    python与浅

    可变对象与不可变对象 要理解深和浅,首先要理解可变对象和不可变对象。 python中的可变对象包括:list、dict、set。  python中的赋值语句不会创建对象的,仅仅只是将变量名称绑定到一个对象上。 创建浅 仍以python列表为例,通常我们会用list()函数来复制一个列表,这个复制过程,就是一个浅。代码示例: ? 可以看到,通过浅方式,确实是复制了一个列表。 创建深 python标准库中的copy模块提供了创建python对象的浅和深的接口。使用deepcopy()函数,可以创建一个对象的深。代码示例: ? 总结 不可变对象没有深和浅之分,可以理解为都是深 创建对象的浅不会克隆子对象,不能完全对立与原始对象 深会递归克隆原始对象,两者完全独立,互不影响,创建深的速度较慢

    19320

    Python中浅与深

    ) new_set = set(original_set) 但是,此方法不适用于自定义对象,而且在此基础上,它只创建浅...对于复合对象,如列表、数据集和集合,有一个重要的区别:浅和深 A 让我们来看看一些例子来证明深和浅之间的区别。 这是物体的浅和深之间的实际区别。 现在知道了如何创建一些内置集合类的浅,并且了解了浅和深之间的区别。但是我们仍然希望得到答案是: 如何创建内置集合的深? 这些问题的答案在Python标准库中的copy模块里。该模块为创建任意Python对象的浅和深提供了一个简单的接口。 深 让我们重复前面的列表复制示例,但有一个重要的区别。 总结 创建对象的浅不会复制子对象。因此,副本并不完全独立于原件。 对象的深将递归地复制子对象。克隆完全独立于原始副本,但是创建深要慢一些。 类复制任意对象(包括自定义类)。

    25810

    9.python和深

    何谓浅/深,说得直白一点,其实就是数据,两者到底有什么区别呢?听着就挺迷糊的,python开发项目的时候说不定你就能碰上这样的坑~~ ? 二.浅和深python开发过程中,有些时候对于上面的情况并不是我们想要的,我们更加希望对赋值后的变量做修改并不影响原始变量的值,如何实现呢? 这里就需要介绍一下copy模块: copy.copy() – 浅,重新分配内存,只父对象,不会对象的内部的子对象; copy.deepcopy() – 深,重新分配内存,对象及其所有子对象 猜你喜欢: 1.python列表推导式 2.python字典推导式 3.python return逻辑运算 4.python线程创建 5.python匿名函数lambda 转载请注明:猿说Python » python和深

    45310

    python之浅与深

    是对于一个对象的顶层 通俗的理解是:了引用,并没有内容 In [10]: a = [11,22,33] In [11]: b = a In [12]: id(a) Out[ 深是对于一个对象所有层次的(递归) In [17]: import copy In [18]: c = copy.deepcopy(a) In [19]: id(a) Out[19] 22, 33] In [23]: a[0] = 11 In [24]: a Out[24]: [11, 22, 33] In [25]: c Out[25]: ['aa', 22, 33] 深不仅引用还值 再看下面的代码,进一步理解浅与深: ? e变量中的a列表也会改变,说明copy.copy方法只了列表[a,b]列表的引用,而没有列表[a,b]中列表a与列表b的引用。

    23220

    python之深和浅

    1.当的是不可变数据类型(数值、字符串、元组),不管是深和浅,都指向的是同一地址; ? 2.当的对象是可变数据类型(列表、字典): (1)当浅的对象中无复杂子对象,原来值的改变不会影响浅的值,同时浅值的改变不会影响原来的值。原来值的id和浅出来对象的id不同。 (2)当浅的对象中有复杂子对象,(例如列表中的一个子元素是一个列表),改变原来的值 中的复杂子对象的值 ,会影响浅复制的值,但它们各自的id没变。 (3)当深时,完全独立,包括内存列表和字典。 ? ?

    14420

    python中的深与浅

    python中的直接赋值、浅和深很容易让人混淆。 1.赋值 a = ['zero', [1,2,3]] b = a 2.浅(shallow copy) import copy c = copy.copy(a) 3.深(deep copy) d c输出: 'zero', [1, 2, 3, '4']] d输出: ['zero', [1, 2, 3]] 赋值的时候,是直接引用,b与a其实都指向同一个对象,所以当a改变时,b也随机改变; 浅的时候 ,a与c独立,但是子对象指向同一对象,a变化时,c列表的子列表[1,2,3]变成了[1,2,3,4]; 深的时候,完全a及其子对象,d与a独立,d不随a的变化而变化。

    14910

    图解 Python与深

    Python 中的赋值语句不会创建对象的,仅仅只是将名称绑定至一个对象。 首先介绍一下 Python 中浅与深的区别: 浅:浅意味着构造一个新的集合对象,然后用原始对象中找到的子对象的引用来填充它。从本质上讲,浅层的复制只有一层的深度。 赋值与引用 在开始浅与深前,我们先来看一下 Python 中的赋值与引用。 如果我们在第一步中创建了一个 lst 的深,那么两个对象就完全独立了。这是对象的浅和深之间的实际区别。 使用 Python 标准库中的 copy 模块可以创建深,这个模块为创建任意 Python 对象的浅和深提供了一个简单的接口。

    33431

    Python|赋值、浅与深

    赋值 在python中一个变量可以说是内存中一个对象的‘标签’或者‘引用’。假设现在有一个变量a。 浅与深 先从概念上来区分浅与深。 注意:在python中,浅与深的不同仅仅是对组合对象而言,所谓的组合对象就是指包含其他对象的对象,比如列表、类等。 a=”abc”b=copy.deepcopy(a) #深a is b #返回True 下面通过组合对象来看看深与浅的区别 #浅import copya=[11,’abc’,[‘python #深import copya=[11,’abc’,[‘python’,’nice’]]b=copy.deepcopy(a) #深a is b #返回Falsea[0] is b[0] #返回Falseprint

    32920

    Python中赋值、浅与深

    python中关于对象复制有三种类型的使用方式,赋值、浅与深。他们既有区别又有联系,刚好最近碰到这一类的问题,研究下。 一、赋值         在python中,对象的赋值就是简单的对象引用,这点和C++不同。 二、浅(shallow copy) 浅会创建新对象,其内容是原对象的引用。         三、深(deep copy)         深只有一种形式,copy模块中的deepcopy函数。 和浅对应,深了对象的所有元素,包括多层嵌套的元素。 四、关于操作的警告 1、对于非容器类型,如数字,字符,以及其它“原子”类型,没有一说。产生的都是原对象的引用。 2、如果元组变量值包含原子类型对象,即使采用了深,也只能得到浅

    41790

    Python copy模块浅和深

    1.切片 对需要的数据进行切片处理,返回的结果相当于了一份数据。 2.工厂方法 使用 python 的工厂函数 list 来数据。 (python的工厂函数是比较特殊的,即是类也是函数,关于工厂函数的理解可以另行扩展一下) 列表时使用 list,如果字符串则将上面的 list 换成 str ,以此类推。 3.list对象的copy方法 python 中的 list 实现了 copy 方法,在列表时可以直接使用。这里需要注意,比如 str 没有实现 copy 方法,字符串时使用其他方法。 上面的四种方法都被称为浅(相对深而言),浅 Python 中的可变对象,如果数据中嵌套了可变对象,修改嵌套的可变对象,所有的数据都会一起被修改。 ? 在Python中,浅消耗的内存和运行效率都优于深,所以默认的都是浅。 对可能需要使用深的情况,要特别留意,使用深,避免出错。

    10340

    Python的深、浅的机制

    首先深和浅都是对象的,都会生成一个看起来相同的对象,他们本质的区别是出来的对象的地址是否和原对象一样,也就是地址的复制还是值的复制的区别。 深和浅需要注意的地方就是可变元素的: 在浅时,出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的,也就是说浅的是浅层次的数据结构 ,这个是浅相对于深最根本的区别。 浅就是藕断丝连 深就是离婚了 通常复制的时候要用深,因为浅后,两个对象中不可变对象指向不同地址,相互不会改变,但是两个对象中的可变元素是指向相同的地址,一个变了,另一个会同时改变,会有影响 用深后完全开辟新的内存地址来保存之前的对象,虽然可能地址执行的内容可能相同(同一个地址,例如’s’),但是不会相互影响。

    6510

    python中赋值,深,浅区别

    和深的区别 需要通过 子元素 区分 浅:子元素的 引用相同 ? 深:所以引用都不相同,完全复制一份 ? 这三种不适合 int,str,float,bool等类型。

    79620

    Python中深与浅的区别?

    废话不多说,开始今天的题目: 问:说说Python中深与浅的区别? 答:Python中如果需要对象,需要使用标准库中的copy模块。而说到copy模块,不得不说的就是深与浅。 深和浅需要注意的地方就是:可变元素的 在浅时,出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的。 但是深不会这样,这个是浅相对于深最根本的区别 。(PS:这句话如果看不懂,请先看下面的代码演示,回过头来再看,就比较好理解了 。) 深,除了顶层,还对子元素也进行了。 原始对象和对象所有的可变元素地址都不一样了。 import copy #定义一个列表,其中第一个元素是可变类型。 list1[1] = 'ge'; print(list2); #结果:复制对象没发生变了 [[1, 2], 'fei', 66] Python深浅总结: 1,深浅都是对源对象的复制,占用不同的内存空间

    11940

    Python 中浅和深的区别

    在本文中,我们将探索什么是深和浅。此外,我们还将讨论它们之间的差异以及何时使用其中一种而不是另一种。 不可变对象 vs 可变对象 在进入 Python 中的浅和深之前,首先要理解可变对象类型和不可变对象类型之间的区别。 浅 vs 深 在深入讨论浅和深的细节之前,请注意,它们的区别只有在我们必须处理本质上是嵌套结构的复合对象时才有意义。换句话说,复合对象是包含其他对象的对象,例如,列表列表或集合字典。 深构造一个新的复合对象,然后递归地将原始对象中找到的对象的副本插入其中。 总结 在本文中,我们探讨了用 Python 复制对象的三种基本方法。 回想一下,一个浅将从原始对象中创建一个新对象,但是如果对象包含其他对象,那么内部对象将不会被复制。另一方面,深度将为复合对象中包含的内部对象创建一个新对象。

    31850

    Python 深浅

    Python和深度 今天面试了一个计算机专业研究生且大学出身也很好,但是面试的结果来看并没有达到我的预期。很多基础计算机的知识貌似都不是很懂,更别说对操作系统、编译原理和算法的深度造化了。 虽然有点扯淡,还是开始咱们今天聊一下Python的浅和深度。 浅 我们先看一下Demmo: #! 看一下产生浅的效果操作: 使用切片[:]操作 使用工厂函数(如list/dir/set) 使用copy模块中的copy()函数 深是完全真正意义上的,是完全复制所有对象元素。 但是对于原子类型对象(immutable)是没有深这么一说的。先来看一下例子: #!

    56580

    相关产品

    • 消息队列 TDMQ

      消息队列 TDMQ

      消息队列 TDMQ 是基于 Apache 顶级开源项目Pulsar自研的金融级分布式消息中间件,是一款具备跨城高一致、高可靠、高并发的分布式消息队列,拥有原生Java 、 C++、Python、GO 多种API, 支持 HTTP 协议方式接入,可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券