• Python中的深拷贝与浅拷贝


    浅拷贝只拷贝了最顶层的,深拷贝拷贝了所有

    拷贝牵扯到以下几种形式:

    • 赋值操作符=
    • copy.copy
    • copy.deepcopy
    • 列表中的切片[:]
    • 字典中的拷贝.copy()
    • 列表作为函数参数

    1. 当拷贝内容为可变类型时

    首先以列表为例,来看python中的深拷贝与浅拷贝:

    如下图,a和b的地址是一样的,b只是指向了a的地址。

    copy.copy后,d只是开辟了一段新的空间,拷贝了c的引用

    copy.deepcopy,是直接拷贝了内容。

     简单总结:=就是指向原地址,copy.copy会开辟一个新地址,内部拷贝了可变类型当时的引用;copy.deepcopy所有元素都拷贝

    2. 当拷贝内容为不可变类型时

    这里以元组为例

    简单总结:当拷贝的内容为不可变类型,无论哪种方法都只是简单引用,不会开辟新地址

    3. 当拷贝内容为不可变类型但包含可变类型

    简单总结:只要包含可变元素,deepcopy就完全拷贝

    4. 列表切片中的拷贝

    简单总结:列表切片中的拷贝,可copy.copy一样,是浅拷贝

    5. 字典中的拷贝

    基本认识:字典是无序的,每一个key通过哈希来得到,字典中存储的是key的引用

    6. 列表作为函数参数传入

  • 相关阅读:
    最长回文子串 leetcode
    leetcode Plus one
    n的阶乘末尾有几个0?
    求两数的最大公约数和最小公倍数
    汉诺塔
    求n的阶乘
    svn book
    求斐波那契数列第n项
    判断一个数是否是素数
    <C Traps and Pitfalls>笔记
  • 原文地址:https://www.cnblogs.com/yunxiaofei/p/11185362.html
Copyright © 2020-2023  润新知