`
ihuashao
  • 浏览: 4722173 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

python 引用,浅copy和深拷贝

阅读更多

l = [1,2,3,4]

g = l

g[-1] = 3

上面这个方法是引用复制,因为g和l是同一个东东,输出结果是 g=[1,2,3,3] l =[1,2,3,3]

如果想复制所有的生成一个新的list,那么使用下面的方法

g = [data for data in l]

这样就全部的值都copy 过来

现在你再g[-1] = 5,g和l 的值肯定不一样。

但是如果l=[1,[1,2]] 在使用同样的方法 g = [data for data in l],然后g[1][-1].append(3)

你会发现l中的值和g中的值还是一样的。原因还是由于copy了引用,而没有copy真正的值。

所以要解决的话,使用笨的方法是:

g = []

g.append(l[0])

g.append([data for data in l[1]])

更好的方式是使用list中的extend,

例如

a = [1,2]

b = []

b.extend(a)

a = []

print(b)

可以看到b还是有a原来的值。

分享到:
评论

相关推荐

    python浅拷贝、深拷贝

    在Python中,浅拷贝(shallow copy)和深拷贝(deep copy)是用于创建对象副本的两种常见方式。它们可以应用于不同类型的对象,如列表、字典、集合等。下面是对浅拷贝和深拷贝的描述: 浅拷贝:浅拷贝是创建一个新...

    copy的使用(深拷贝、浅拷贝)

    在Python编程语言中,"copy"模块提供了对对象复制的...了解深拷贝和浅拷贝的概念后,开发者可以根据具体需求选择合适的方法。在实际编程中,结合使用`copy`模块和`deepcopy`函数,可以更有效地管理内存和数据的独立性。

    Python 深拷贝和浅拷贝详解

    在Python编程语言中,深拷贝和浅拷贝是两种不同的复制对象的方法,它们涉及到对象内存的管理和数据结构的复制。这两个概念对于理解和处理复杂的对象结构至关重要。 **浅拷贝**: 浅拷贝(Shallow Copy)是创建一个...

    图解:python中的浅拷贝和深拷贝

    在Python编程语言中,了解如何正确处理对象的拷贝至关重要,特别是浅拷贝和深拷贝的概念。浅拷贝和深拷贝主要涉及到列表、元组等可变对象的复制,以及这些对象内部包含的不可变和可变对象的情况。 浅拷贝(Shallow ...

    python的深拷贝与浅拷贝

    Python中的深拷贝和浅拷贝是编程时处理对象复制的关键概念,特别是在处理复杂数据结构时。它们决定了拷贝操作的“深度”,即创建新对象的程度。本文将深入探讨这两种拷贝的区别,以及如何在Python中正确使用它们。 ...

    Python中字典的浅拷贝与深拷贝用法实例分析

    本文实例讲述了Python中字典的浅拷贝与深拷贝用法。分享给大家供大家参考,具体如下: 最近发现的一个很值得记录的东西就是python字典的浅拷贝问题 首先,明确一下什么是浅拷贝,什么是深拷贝: 简单的来说就是,在...

    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的赋值、深拷贝与浅拷贝的区别详解

    在Python编程语言中,了解对象的赋值、深拷贝和浅拷贝是至关重要的,因为这直接影响到程序中数据的处理和预期行为。以下是对这些概念的详细解释: 1. **Python直接赋值** 当我们将一个对象赋值给另一个变量时,如`...

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

    了解并掌握浅拷贝和深拷贝对于编写健壮的Python程序至关重要,尤其是在处理数据结构的复制和修改时。通过选择正确的拷贝方法,我们可以避免意外的数据篡改,保持代码的预期行为。在实际开发中,应根据具体需求选择...

    深入浅析Python中list的复制及深拷贝与浅拷贝

    在实际编程中,使用深拷贝和浅拷贝时,应当留意可能出现的内存开销和性能问题。在处理大量数据或深度嵌套的数据结构时,深拷贝可能会导致显著的性能下降。因此,开发者需要根据具体情况,选择合适的复制方法,从而...

    Python中的复制操作及copy模块中的浅拷贝与深拷贝方法

    为了解决上述问题,Python 提供了`copy`模块,其中包含了`copy()`和`deepcopy()`两个函数,分别用于执行浅拷贝和深拷贝。 - **浅拷贝**:`copy()`函数会创建一个新的容器对象,并尽可能地复制原对象中的所有内容。...

    对于Python深浅拷贝的理解

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

    python的copy方法.docx

    本文将深入探讨Python的`copy`方法,包括浅拷贝和深拷贝的概念、区别以及如何在实践中应用。 浅拷贝,如其名,仅仅复制对象的最外层。如果对象是简单的数据类型(如整数、字符串、浮点数等),那么浅拷贝会产生一个...

    copy 深/浅

    在Swift中,没有直接提供浅拷贝和深拷贝的概念,但可以通过结构体和类的不同行为来模拟。结构体是值类型,复制时会进行深拷贝;而类是引用类型,复制时默认是浅拷贝。不过,Swift提供了`NSCopying`协议,通过实现这...

    深拷贝拷贝的是内容,浅拷贝拷贝的是指针

    深拷贝和浅拷贝的选择取决于数据结构的特性以及应用场景的需求。了解深拷贝与浅拷贝的工作原理对于编写高效可靠的代码至关重要。同时,熟悉堆与栈的概念有助于更好地理解和优化程序的内存使用情况。在实际开发过程中...

    深入理解python中的浅拷贝和深拷贝

    在Python中有两种主要的拷贝方式:浅拷贝和深拷贝。 #### 二、浅拷贝详解 浅拷贝是指仅复制对象的第一层,即创建一个新对象,并将原始对象的引用复制到新对象中。这意味着如果原始对象包含可变对象(如列表或字典)...

Global site tag (gtag.js) - Google Analytics