首页 > 其他分享 >深浅拷贝

深浅拷贝

时间:2023-12-12 16:37:21浏览次数:17  
标签:对象 数据类型 list 深浅 print 拷贝 copy

深浅拷贝

【1】浅拷贝

  • 浅拷贝仅复制对象的一层内容,如果对象中包含了可变数据类型(如列表、字典等),则拷贝的对象将与原对象共享这些可变数据类型的引用。
  • 这意味着对于原对象中的可变数据类型进行修改操作时,拷贝的对象也会受到影响。
import copy

# 原对象
list = [1, 2, [3, 4]]
# 使用浅拷贝创建拷贝对象
copy_list = copy.copy(list)
# 修改原对象中的可变数据类型
list[2].append(5)

print("原对象:", list)   #原对象: [1, 2, [3, 4, 5]]
print("拷贝对象:", copy_list) #拷贝对象: [1, 2, [3, 4, 5]]

【2】深拷贝

  • 深拷贝会创建一个完全独立的新对象,包括所有的嵌套对象。
  • 无论原对象的数据类型是可变还是不可变,深拷贝都会创建出新的对象,以后对原对象的修改不会影响到拷贝对象。
import copy

# 原对象
list = [1, 2, [3, 4]]
# 使用深拷贝创建拷贝对象
copy_list = copy.deepcopy(list)
# 修改原对象中的可变数据类型
list[2].append(5)
print("原对象:", list)   #原对象: [1, 2, [3, 4, 5]]
print("拷贝对象:", copy_list)  #拷贝对象: [1, 2, [3, 4]]
from copy import deepcopy

list = [1, 2, 3, [4, 5, 6, ]]
list_d_copy = deepcopy(list)
list_d_copy[3][1] = 555

print(list)  # [1, 2, 3, [4, 5, 6]]

print(list_d_copy)  # [1, 2, 3, [4, 555, 6]]

深拷贝和浅拷贝在处理对象和数据结构时有不同的行为:

  • 深拷贝创建一个完全独立的对象,递归地复制所有嵌套对象。
  • 浅拷贝创建一个新对象,但它共享原始对象中可变对象的引用。

标签:对象,数据类型,list,深浅,print,拷贝,copy
From: https://www.cnblogs.com/unrealqcc/p/17897199.html

相关文章

  • vue 深拷贝
    方法一:cloneDeepimport{cloneDeep}from'lodash-es'//直接使用constitems=cloneDeep(multipleSelection)方法二:​通过JSON.parse(JSON.stringify(obj))优缺点满足一般使用场景,用JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象。但这种......
  • 文件操作&深浅拷贝&异常处理
    文件操作【1】基本流程(1)文件操作操作打开读文件内容rwithopen('01.txt','r',encoding='utf-8')asf:data=f.read()print(data)打开写文件内容w#普通语句f=open('01.txt','w',encoding='utf-8')f.write(&#......
  • 深浅拷贝问题
    深浅拷贝问题一、拷贝的介绍在Python中,深拷贝和浅拷贝是用于复制对象的两种不同的方式。首先深拷贝和浅拷贝都是对原对象的拷贝,都会生成一个看起来相同的对象,本质区别就是拷贝出来的对象的「地址」是否与原对象一样,即就是对原对象的地址的拷贝,还是值的拷贝二、深拷贝和浅拷......
  • Python 深拷贝和浅拷贝详解
    import logging 一、深拷贝和浅拷贝概念理解1、浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。2、深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和......
  • 深浅拷贝
    首先需要明确一点:在什么情况下讨论深浅拷贝。对于不可变数据类型的变量不存在深浅拷贝问题。深浅拷贝讨论的对象是可变数据类型的变量,如列表、字典等。在Python中,深拷贝(deepcopy)和浅拷贝(shallowcopy)是用于复制对象的概念。浅拷贝创建了一个新对象,该对象与原始对象共享内部......
  • python中级之深浅拷贝
    深浅拷贝异同相同点:无论深拷贝还是浅拷贝都会创建一个新对象。即:拷贝出来的对象的id不同。不同点:浅拷贝:只拷贝了对象,对象内的元素并不会发生拷贝。深拷贝:不仅拷贝对象,对象内的元素也会发生拷贝。浅拷贝浅拷贝举例来看一个浅拷贝的例子:importcopya=[1,2,[3,4]]......
  • Python中级之深浅拷贝
    深浅拷贝Python源码对深浅拷贝的解释以下来源于Python源码中对copy的解释#英文原文Thedifferencebetweenshallowanddeepcopyingisonlyrelevantforcompoundobjects(objectsthatcontainotherobjects,likelistsorclassinstances).-Ashallowcopyco......
  • python入门之深浅拷贝】---python 深浅拷贝
    title:【python入门之深浅拷贝】---python深浅拷贝date:2023-12-0618:54:06updated:2023-12-0619:20:00description:【python入门之深浅拷贝】---python深浅拷贝cover:https://zhuanlan.zhihu.com/p/631965597https://home.cnblogs.com/u/dream-ze/【......
  • 深浅拷贝
    深浅拷贝1.浅拷贝浅拷贝是指创建一个新对象,并将原始对象的元素复制到新对象中#num_list=[1,2,[3,4]]##使用浅拷贝创建拷贝对象#copy_list=copy.copy(num_list)###修改原对象中的可变数据类型#num_list[2].append(5)##print("原对象:",num_list) #[1,......
  • 深浅拷贝问题
    深浅拷贝问题copy.copy浅拷贝copy.deepcopy深拷贝浅拷贝copy.copycopy.copy浅拷贝原来的拷贝对象------拷贝出了一个新的对象修改原对象------原对象必须改变-----新对象也会随着原对象的改变而改变。总结:复制一份原来的对象,如果原来的对象中存在可变数据类型,那么修......