`
诗意的栖居
  • 浏览: 274481 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

python copy and deepcopy

 
阅读更多
>>> a=[[1,2],(3,5),123,[1,2,3,4]]

>>> b=copy.copy(a)

>>> b
[[1, 2], (3, 5), 123, [1, 2, 3, 4]]

>>> b[2]=456

>>> b
[[1, 2], (3, 5), 456, [1, 2, 3, 4]]

>>> a
[[1, 2], (3, 5), 123, [1, 2, 3, 4]]

a之所以没有变,是因为b修改的是不可变对象。
拷贝了一个不可变的对象的引用, 修改你得到的变量只会让该变量的引用指向一个新的对象, 别指望还能改变原来的变量的引用所指向对象的值。

>>> b[0][1]=0

>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> b
[[1, 0], (3, 5), 456, [1, 2, 3, 4]]

copy.copy只是复制的a本身,a里面的对象并没有被复制,还是引用的。等于属于浅copy


>>> c=copy.deepcopy(a)

>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c[0][1]=12

>>>c
[[1, 12], (3, 5), 123, [1, 2, 3, 4]]

>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c[2]=457

>>> a

[[1, 0], (3, 5), 123, [1, 2, 3, 4]]

>>> c

[[1, 4], (3, 5), 457, [1, 2, 3, 4]]

copy.deepcopy是连内部的对象一块复制的
分享到:
评论

相关推荐

    浅谈python中copy和deepcopy中的区别

    在Python编程中,复制对象是常见的操作,主要分为两种方式:浅复制(copy)和深复制(deepcopy)。这两种复制方法在处理复杂的数据结构时,表现出来的行为有所不同,因此了解它们的区别至关重要。 首先,让我们来看...

    python list的deepcopy过慢(csdn)————程序.pdf

    然而,Python的内置`copy.deepcopy()`函数在处理大型或嵌套数据结构时可能会变得非常慢,这在性能敏感的代码中可能成为一个问题。 本篇讨论的是如何优化Python列表的深拷贝操作,特别是在一个程序运行缓慢并经`...

    x1ah#Blog#Python 中谨慎使用 copy.deepcopy()1

    title: Python 中谨慎使用 copy.deepcopy()>在一次做 Benchmark 的时候,发现无论如何调代码,最后总是不尽人意,之后用 `p

    python中copy()与deepcopy()的区别小结

    接触python有一段时间了,一直没有系统的学习过,也对copy,deepcoy傻傻的分不清,故抽出时间来理一下。 下面这篇文章主要给大家介绍了关于python中copy()与deepcopy()的区别的相关资料,需要的朋友可以参考下

    Python-copy()与deepcopy()区别详解

    `copy()`和`deepcopy()`是Python标准库`copy`模块中提供的两个函数,它们用于创建对象的副本。本文将深入探讨这两种复制方法的区别及其背后的工作原理。 首先,让我们明确`copy()`和`deepcopy()`的基本概念: 1. *...

    python基础 30 浅复制&深复制, copy & deepcopy (教学教程tutorial)

    python基础_30_浅复制&深复制,_copy_&_deepcopy_(教学教程tutorial)

    【Python 技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

    copy 模块提供了通用的浅层复制 copy() 和深层复制 deepcopy() 操作。 copy() 仅复制对象本身,而不对其中的子对象进行复制,如果对原子对象进行修改,那么浅层复制之后的对象也会随着修改。 deepcopy() 是真正意义...

    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    import copya = [1, 2, 3, 4, [‘a’, ‘b’]] #原始对象b = a #赋值,传对象的引用c = copy.copy(a) #对象拷贝,浅拷贝d = copy.deepcopy(a) #对象拷贝,深拷贝a.append(5) #修改对象aa[4]....

    Python中浅拷贝copy与深拷贝deepcopy的简单理解

    本篇文章将深入探讨Python中的浅拷贝`copy`和深拷贝`deepcopy`的概念。 1. **浅拷贝(Shallow Copy)**:通过`copy.copy()`函数实现。浅拷贝会创建一个新对象,这个新对象包含原始对象中的所有元素,但这些元素仍然...

    学学Python_字符串09_字典的方法02 copy方法

    对于需要深度拷贝(即完全独立的对象副本,包括嵌套的可变对象)的情况,可以使用`copy.deepcopy()`函数,这是`copy`模块提供的功能: ```python import copy deep_copy_dict = copy.deepcopy(original_dict) ``` ...

    对于Python深浅拷贝的理解

    通过调用copy包里的deepcopy方法来深拷贝,其实就是在内存区在分配保存了和a相同的数据,用c来指向它,和a的内存地址不同。怎么验证就是我说的这种情况的呢?用下图来说明吧: 可以看出向a 添加一个元素,通过浅...

    python深copy和浅copy区别对比解析

    这篇文章主要介绍了python深copy和浅copy区别对比解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先先看一段代码 import copy a = [1, 2, 3, [4]] b = ...

    python的copy方法.docx

    深拷贝可以通过Python的`copy`模块中的`deepcopy`函数实现: ```python import copy a = [1, 2, [3, 4]] b = copy.deepcopy(a) a[2][0] = 5 print(b) # 输出[1, 2, [3, 4]] ``` 在这个例子中,由于使用了深拷贝,...

    python-copy函数用法.docx

    Python中的`copy`模块提供了两种复制对象的方式:浅复制(shallow copy)和深复制(deep copy)。这两种复制方法在处理复杂数据结构如列表、字典等时有着显著的区别。 ### 浅复制 浅复制是默认的复制行为,通过`....

    python-copy函数用法.doc

    Python中的`copy`模块提供了两种方法来复制对象:浅复制(shallow copy)和深复制(deep copy)。这两个概念在处理复杂数据结构如列表、字典、集合等时尤为重要,因为它们涉及到对象引用的问题。 浅复制是通过`copy...

    python-拷贝构造函数.docx

    在Python中,拷贝构造函数可以通过定义`__copy__`和`__deepcopy__`方法来实现。 1. **浅拷贝(Shallow Copy)**: 浅拷贝创建了一个新对象,但只复制了原对象的引用,而不是对象本身。这意味着如果原对象的某个...

    PYTHON学习教程-Python基础学习

    PYTHON学习教程-Python基础学习 序列相关的函数: ...copy.deepcopy L.copy() L2 = L 字符串方法: S.split(sep=None) S.join(序列) 列表推导式 [表达式 for 变量 in 可迭代对象 if 真值表达式]

    python 原型模式(示例)

    在Python中,我们可以直接通过内置的`copy`模块或浅拷贝`__copy__`方法以及深拷贝`__deepcopy__`方法来实现原型模式。 下面我们将通过一个具体示例来演示如何实现原型模式: 假设我们有一个`Shape`类,它是所有...

Global site tag (gtag.js) - Google Analytics