美文网首页
Python:浅拷贝和深拷贝实例

Python:浅拷贝和深拷贝实例

作者: 这只鱼慢悠悠 | 来源:发表于2017-05-09 10:34 被阅读0次

第一次有勇气写文章,记录一下程序媛路边的每一道风景~

学习Python的时间不长,但是很多教程都介绍了python的浅拷贝和深拷贝,虽然理解它的概念,却不知道具体该怎么用,直到今天~

这是剑指offer上的一个小程序,就是返回一棵二叉树上,所有路径大小(根到叶子节点的元素和)为rest的路径集合:

    def findallpath(self, root, rest, pathlist, path):
        if root is None:
            return
        path.append(root.val)
        rest -= root.val
        if root.left is None and root.right is None:
            if rest == 0:
                pathlist.append(pathlist)
        self.findallpath(root.left, rest, pathlist, path)
        self.findallpath(root.right, rest, pathlist, path)
        # print path
        path.pop()

上面的代码中,想用pathlist保存所有满足条件的path,但是运行程序发现,结果是这样的[[][]]
打印pathpath可以找到正确的结果。

调试后,发现pahtlist.append操作时,使用了浅拷贝,添加的是path指向的元素(有点类似C中的引用)。当path修改时,pathlist也会随着变化,所以,我们并不能保存到满足条件时的path。。。

更正,将代码改为pathlist.append(copy.deepcopy(path)),将path中的所有元素都真正copy给pahtlist结果正确~
yeah!

相关文章

  • python 深拷贝与浅拷贝

    图解 Python 深拷贝和浅拷贝

  • Python底层|赋值 浅拷贝 深拷贝

    参考 python中的深拷贝和浅拷贝问题python的复制,深拷贝和浅拷贝的区别 结论 总体来说,赋值只是增加了一...

  • Python中的引用赋值,深拷贝,浅拷贝

    摘要:Python,引用赋值,深拷贝,浅拷贝 总结一下Python中的变量的引用赋值,深拷贝和浅拷贝,先上结论 赋...

  • 谈谈python中的深拷贝和浅拷贝

    最近面试被问到python中深拷贝和浅拷贝的知识这里进行下总结,以便今后复习python中的深拷贝和浅拷贝和jav...

  • Python:浅拷贝和深拷贝实例

    第一次有勇气写文章,记录一下程序媛路边的每一道风景~ 学习Python的时间不长,但是很多教程都介绍了python...

  • 简介深浅拷贝

    深浅拷贝 python 直接赋值,浅拷贝和深拷贝 直接赋值 其实就是对象的引用 (可以理解成浅拷贝) 浅拷贝: 拷...

  • 原型模式

    简介 实现Cloneable接口,重写clone方法。要注意深拷贝和浅拷贝问题。 浅拷贝:新实例的...

  • 浅拷贝、深拷贝

    浅拷贝、深拷贝 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。 深拷贝:当一个类的...

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • 2019-02-22

    阿里云创建python软连接pip 浅拷贝和深拷贝

网友评论

      本文标题:Python:浅拷贝和深拷贝实例

      本文链接:https://www.haomeiwen.com/subject/mkjbtxtx.html