python中的拷贝

  1.赋值: 只是复制了新对象的引用,不会开辟新的内存空间。
  2.浅拷贝: 创建新对象,其内容是原对象的引用。
    浅拷贝有三种形式:切片操作,工厂函数,copy模块中的copy函数。
    如: lst = [1,2,3,[4,5]] 
    切片操作:lst1 = lst[:] 或者 lst1 = [each for each in lst]  要注意:list1=lst 和list1=lst[:]的区别
    工厂函数:lst1 = list(lst)
    copy函数:lst1 = copy.copy(lst)

    浅拷贝之所以称为浅拷贝,是它仅仅只拷贝了一层,在lst中有一个嵌套的list[4,5],如果我们修改了它,情况就不一样了。

  3.深拷贝:只有一种形式,copy模块中的deepcopy函数。
     和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。
     深拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关联。

import copy
a = [1, 2, 3, 4, ['a', 'b']] #定义一个列表a
b = a #赋值
c = copy.copy(a) #浅拷贝
# c = a[:]
d = copy.deepcopy(a) #深拷贝a.append(5)
print(a)
#[1, 2, 3, 4, ['a', 'b'], 5] #a添加一个元素5
print(b)
#[1, 2, 3, 4, ['a', 'b'], 5] #b跟着添加一个元素5
print(c)
#[1, 2, 3, 4, ['a', 'b']] #c保持不变
print(d)
#[1, 2, 3, 4, ['a', 'b']] #d保持不变a[4].append('c')
print(a)
#[1, 2, 3, 4, ['a', 'b', 'c'], 5] #a中的list(即a[4])添加一个元素c
print(b)
#[1, 2, 3, 4, ['a', 'b', 'c'], 5] #b跟着添加一个元素c
print(c)
#[1, 2, 3, 4, ['a', 'b', 'c']] #c跟着添加一个元素c
print(d)
#[1, 2, 3, 4, ['a', 'b']] #d保持不变#说明如下:
#1.外层添加元素时, 浅拷贝c不会随原列表a变化而变化;内层list添加元素时,浅拷贝c才会变化。
#2.无论原列表a如何变化,深拷贝d都保持不变。
#3.赋值对象随着原列表一起变化

参考:

(1).https://www.cnblogs.com/huangbiquan/p/7795152.html (Python中的赋值(复制)、浅拷贝、深拷贝之间的区别

(2).https://www.cnblogs.com/xueli/p/4952063.html(python的复制,深拷贝和浅拷贝的区别)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZOJ 2112 Dynamic Rankings

这里是题目地址 其实就是带修改的区间第K大。 写了一下BIT套主席树,内存飞起,似乎需要特别的优化技巧 所以还是写了一下线段树套平衡树,跑了1s左右。 其实线段树套平衡树就是归并树的自然扩展而已。 归并树是把归并排序的过程建成一颗线段树…

python3[进阶]8.对象引用、可变性和垃圾回收

文章目录8.1变量不是盒子8.2 标识,相等性和别名8.2.1 在和is之间选择8.2.2 元组的相对不可变性8.3 默认做浅复制(拓展)为任意对象做深复制和浅复制深拷贝和浅拷贝有什么具体的区别呢?8.4 函数的参数作为引用时8.4.1 不要使用可变类型作为参数…

openfire修改服务器名称方法

1.登陆openfire管理页面,在主页面下方选择编辑属性,修改服务器名称为当前主机名称,点击保存属性,按页面提示重启服务器。 2.重启后,主页的服务器属性下的服务器名称出现一个叹号,鼠标放上去显示Found RSA c…

python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)

文章目录可迭代对象迭代器什么是迭代器什么是生成器生成器的作用生成器的注意事项总结:高阶函数什么是高阶函数?map()函数filter()函数reduce()函数参考可迭代对象 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类…

网络阅读开篇

网络阅读也符合马太效应,投入的时间越多,获取的有效信息却越来越少,因此做出以下规定: 1、限制网络阅读时间; 2、每次阅读做总结。 本来想的挺简单的,随便搜了一下,居然一部小心拜读了两位大神的…

python (第二章)数据结构

文章目录2.5 对序列使用 和 建立由列表组成的列表2.6序列的增量赋值(和)关于 的谜题补充:extend()方法和有什么区别呢?2.7 list.sort方法和内置函数sorted(排序)2.8 用bisect来管理已排序的序列2.8.2用bisect.insort插入元素2.9 当…

数据库 CURD测试题【简单】

文章目录1.组合两个表基本信息要求答案2.第二高的薪水基本信息要求答案3.查找重复的电子邮箱基本信息要求答案4.超过经理收入的员工基本信息要求答案:5.超过5名学生的课信息:要求答案6.有趣的电影信息要求答案7.交换工资(updeta,条件判断&…

JAVA学习资料整理

今天偶然间发现之前一个群里发过的一篇关于JAVA学习资料的东西。本着服务大众的精神,搬来了博客园: 《JAVA编程思想》第四版(英文原版)下载地址:http://115.com/file/e7fzi0fm《JAVA开发实战经典》下载地址&#xff1a…

mysql快速了解

文章目录数据库了解:快速操作:安装mysql启动,关闭,重启mysql服务连接mysql的root用户创建数据库删除数据库选择数据库mysql 数据类型MySQL 创建数据表MySQL 删除数据表MySQL 插入数据MySQL 查询数据MySQL WHERE 子句BINARY 关键字MySQL UPDATE 更新批量更…

javascript编程风格(粗略笔记)

1、空格 紧凑型&#xff1a;    project.MyClass function(arg1, arg2){  松散型&#xff1a;    for( i 0; i < length; i ){ 2、代码行长度  最多80个字符 3、命名: 采用驼峰式方法命名(开始的第一个单词小写&#xff0c;之后的所有单词首字母大写)  var …

数据结构 面试题

文章目录1.数组1.1 寻找数组中第二小的元素1.2 找到数组中第一个不重复出现的整数1.3合并两个有序数组1.4 重新排列数组中的正值和负值2.栈2.1 前缀表达式&#xff0c;中缀表达式&#xff0c;后缀表达式2.1.1 中缀表达式转化为后缀表达式2.1.2 中缀表达式转化为前缀表达式2.2使…

WPF之无法触发KeyDown或者KeyUp键盘事件

有时候我们可能在Panel(StackPanel、Canvas、Grid)上或者是在一些默认不支持Focus的控件上添加了KeyDown或者KeyUp&#xff0c;可是残酷的现实告诉我们&#xff0c;这是无法触发的&#xff0c;怎么办呢&#xff0c;很简单&#xff0c;只需一句代码。 private void MouseLeftBut…

宣布在日本地区正式发布 Windows Azure

&#xfeff;&#xfeff;昨天&#xff0c;我与 Microsoft 日本的集团副总裁 Yasuyuki Higuchi 一同站在台上&#xff0c;宣布在两个新地区正式发布 Windows Azure&#xff1a;日本东部和日本西部。能够亲自见证 Microsoft 对日本市场的持续承诺&#xff0c;对我来说是莫大的荣…

运行cmd状态下MySQL导入导出.sql文件

MySQL导入导出.sql文件步骤如下&#xff1a; 一.MySQL的命令行模式的设置&#xff1a; 桌面->我的电脑->属性->环境变量->新建-> PATH“&#xff1b;path\mysql\bin;”其中path为MySQL的安装路径。 二.简单的介绍一下命令行进入MySQL的方法&#xff1a; 1.C:\&g…

python中的collections

文章目录deque(双向列表)defaultdict(为不存在的key设置默认值)OrderedDictOrderedDict可以实现一个FIFO&#xff08;先进先出&#xff09;的dict&#xff0c;Counter参考collections是Python内建的一个集合模块&#xff0c;提供了许多有用的集合类。deque(双向列表) 使用list…

mysql 面试点

文章目录mysql 运算符1.mysql运算符中的 !和Not的区别&#xff1f;CRUD1.条件判断的用法2. not exits 和not in 的区别3. case when语句mysql函数1.to_days()连接1.什么时候选择右连接&#xff0c;什么时候选择左连接&#xff1f;mysql 运算符 1.mysql运算符中的 !和Not的区别…

[Windows Phone] 实作不同的地图显示模式

[Windows Phone] 实作不同的地图显示模式 原文:[Windows Phone] 实作不同的地图显示模式前言 本文章主要示范如何让地图有不同的模式产生&#xff0c;例如平面图、地形图、鸟瞰图、鸟瞰图含街道等。 这部分主要是调整 Map.CartographicMode 属性&#xff0c;其中 MapCartograph…

数据库 CURD测试题【中等】

文章目录1.换座位&#xff08;交换相邻的id&#xff09;基本信息要求答案[case when]2.分数排名(分组&#xff0c;排序)基本信息要求答案3.连续出现的数字(连接)信息要求答案4.第N高的薪水(函数)信息要求答案5.各个部门工资最高的员工(分组&#xff0c;连接)信息要求答案6.统计…

[STemWin教程入门篇]第一期:emWin介绍

特别说明&#xff1a;原创教程&#xff0c;未经许可禁止转载&#xff0c;教程采用回复可见的形式&#xff0c;谢谢大家的支持。 armfly-x2,x3,v2,v3,v5开发板裸机和带系统的emWin工程已经全部建立&#xff0c;链接如下&#xff1a; http://bbs.armfly.com/read.php?tid1830 SE…