美文网首页
Python浅拷贝与深拷贝

Python浅拷贝与深拷贝

作者: Recalcitrant | 来源:发表于2019-06-30 15:26 被阅读0次

Python浅拷贝与深拷贝

一、可变对象与不可变对象

见Python变量

二、copy模块

对象拷贝是指在内存中创建新的对象,产生新的内存地址。

  • 浅拷贝只拷贝最外层对象,深拷贝还会递归拷贝内层对象。
  • 无论是浅拷贝还是深拷贝,只拷贝mutable可变对象成为一个新对象,而immutable不可变对象还是原来的那个。
  • 当顶层对象和它的子元素对象全都是immutable不可变对象时,因为没有产生新对象,所以不存在被拷贝。

1.浅拷贝

import copy
copy.copy()
    1. 顶层是mutable,子元素全是immutable


    1. 顶层是mutable,子元素部分immutable


    1. 顶层是immutable,子元素全是immutable
    1. 顶层是immutable,子元素部分mutable

2.深拷贝

import copy
copy.deepcopy()
    1. 顶层是mutable,子元素全是immutable
    1. 顶层是mutable,子元素部分mutable


    1. 顶层是immutable,子元素全是immutable
    1. 顶层是immutable,子元素部分mutable

三、其他拷贝方法

1. 列表的复制

列表的复制都相当于浅拷贝效果,有以下三种方式:

  • 1.列表的copy()函数
  • 2.list()转换函数
  • 3.列表切片[:]

2. 元组的复制

使用分片[:]操作,相当于浅拷贝的效果。

3. 字典的复制

同列表类似,可以使用字典的copy()函数或者转换函数dict()。

4. 集合的复制

同列表类似,可以使用集合的copy()函数或者转换函数set()。

相关文章

网友评论

      本文标题:Python浅拷贝与深拷贝

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