首页 > 编程语言 >学习:python进阶 深浅拷贝

学习:python进阶 深浅拷贝

时间:2022-08-29 09:23:33浏览次数:64  
标签:进阶 python list1 内存空间 列表 深浅 拷贝 copy

什么是拷贝?

原封不动地复制一份新的,在不同的内存地址上,修改旧的不会影响新的

 

【变量赋值不是拷贝】

list1=[1,2,[1,2]]

list2=list1

 

list1=[1,2,[1,2]]

list2=list1.copy()#浅拷贝,使用copy模块的copy方法,都是浅拷贝

 

 执行浅拷贝操作,将在开辟一块新的内存空间,然后list2绑定到这块内存空间上。

新内存空间中有三个位置用来存放其三个元素的内存地址

新拷贝的列表的三个位置分别绑定就列表三个位置上的元素的内存地址

所以修改就列表中的子列表时,会影响新列表中的值,因为它们还同步一部分内存空间

【深拷贝】

from copy import deepcopy

list1=[1,2,[1,2]]

list2=deepcopy(list1)

 

 深拷贝时,当元素是可变数据类型时,会重新开辟一块内存空间,存放这个元素对象的内存地址,且该元素内部的可变数据类型也会重新开辟内存空间,层层检查,层层拷贝

此时,新旧列表的子元素都不会共享内存地址,所有不会相互影响

【总结】

深浅拷贝讨论的拷贝对象是可变数据类型

深浅拷贝的区别在于:是否区分元素的可变还是不可变类型的判断

列表的切片也是浅拷贝,copy模块的copy.copy()函数是浅拷贝操作,和列表的内置方法copy()功能相同。

容器型数据类型的拷贝都存在深浅拷贝问题

深浅拷贝没有优缺点

 

标签:进阶,python,list1,内存空间,列表,深浅,拷贝,copy
From: https://www.cnblogs.com/datizi/p/16634750.html

相关文章

  • 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(15)-Fiddler弱网测试,知否知否,应是必知
    1.简介现在这个时代已经属于流量时代,用户对于App或者小程序之类的操作界面的数据和交互的要求也越来越高。对于测试人员弱网测试也是需要考验自己专业技术能力的一种......
  • 学习:python进阶 基本数据类型总结
    【按存值个数】标量/原子类型容器类型数字,字符串列表,元组,字典,集合   【可变/不可变】可变不可变列表、字典、集合数字、字符串、元组 ......
  • Python 常见函数
    glob.glob()函数获取文件目录下符合条件的所有文件: dataset_path=glob.glob('data/*.npy')例:获取'data'目录下的所有'.npy'文件#generate_data()datas......
  • python类和函数(四)
    一、函数1、函数的定义使用关键字def语法:def函数名(<参数>)#99乘法表defprin():foriinrange(1,10):print()forjinrange(1,i+1):......
  • 【python3.8】斐波拉契数列实现
    importtimedefmemoize(f):memo={}defhelper(x):ifxnotinmemo:memo[x]=f(x)returnmemo[x]returnhelper......
  • python学习Day54
    Day54今日内容概要一.DOM其他操作1.JS获取用户输入2.JS类属性操作3.JS样式操作(了解)4.JS事件(1)什么是事件(2)绑定事件的两种方式(3)事件中的重点关键字this......
  • Python3项目初始化10-->JS基础、dom、jquery、database
    29、JS基础var定义变量数字字符串和Python一样布尔值true和false首字母不大写逻辑判断if(){}elseif(){}else{}借助浏览器console执行操作,见截图。   ......
  • Python学习笔记(十一)-- Django API RESTful
    1.Django restframework之序列化https://www.cnblogs.com/midworld/p/11380194.html  2.写API的三个重点(1)路由;(2)视图类(提供给用户访问相当于原来的视图函数);(3)序列化......
  • python字符串转换为字典
    通过eval转换:eval方法虽然没有转换问题,但存在安全性问题,因为eval不仅能解析数据类型还能解析一些恶意输入命令,可能造成不好的影响user='{"name":"john","gender":......
  • 第十三章 Python文件处理
    一、概述应用程序运行过程中产生的数据最先都是存放于内存中的,若想永久保存下来,必须要保存于硬盘中。应用程序若想操作硬件必须通过操作系统,而文件就是操作系统提供给应用......