拷贝

小数据池 集合 深浅拷贝

こ雲淡風輕ζ 提交于 2019-12-05 04:04:50
小数据池 集合 深浅拷贝 一、小数据池 定义:小数据池是Python中一种提高效率的方式,固定数据类型使用同一个内存地址,支持数据类型:str,int,bool是一种缓存机制,特被称为驻留机制,各大编程语言中都有类似的东西。 id() ----- 查看元素的内存地址 is 与 == 的区别 is 判断两个元素的内存地址是否相等 == 判断等号左右两边的元素的值是否相等 小数据池的规则 数字:-5~256 字符串: 字符串在做乘法(乘数不为1)的时候总长度不能超过20 自己定义的字符串的长度不受限制,但字符串必须由字母、数字、下划线组成。 特殊字符(中文除外)定义1个的时候,进行驻留 代码块:一个文件,一个模块,一个函数,一个类,终端中每一行都是一个代码块 规则 数字:全部驻留 字符串: 自己定义的字符串全部驻留 字符串做乘法(乘数不为1)时总长度不超过20 Python3.7以上版本乘法的时候总长度不能超过4096 二、set集合 定义:集合就是一个没有value的字典,无序,去重,可哈希,集合是一个可变数据类型 语法:{1,2,3,4,5} 集合的相关操作 s = {1,2,3,4,5} 增 s.update(可迭代数据类型) --- 迭代添加 s.add('haven') ----- 单个添加 删 # s.pop() ---- 随机删除 # s.remove(3) ----

关于前端拷贝

夙愿已清 提交于 2019-12-05 03:08:32
深拷贝 创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象 几种实现方式: 1.JSON.parse(JSON.stringify()) 用JSON.stringify将对象转成JSON字符串,再用JSON.parse()把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝 这种方法虽然可以实现数组或对象深拷贝,但不能处理函数 2 代码实现一个深拷贝 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head> <body> <script> // 在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. function dataType(value) { return Object.prototype.toString.call(value).slice(8, -1); } function clone(value) { let result, currentType = dataType(value) if (currentType === 'Object') { result = {} } else if (currentType === 'Array') { result = [

shutil模块详解

天涯浪子 提交于 2019-12-05 02:54:23
目录 shutil模块高级的文件操作模块: 简介: shutil功能: 拷贝/删除/移动: 创建压缩解压 注意: shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的! shutil模块高级的文件操作模块: 简介: os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作。 比如说:绝对路径,父目录…… 但是,os文件的操作还应该包含移动 复制 打包 压缩 解压等操作,这些os模块都没有提供。 而本章所讲的shutil则就是对os中文件操作的补充。--移动 复制 打包 压缩 解压。 shutil功能: 拷贝/删除/移动: 函数 介绍 示例 shutil.copyfileobj(fsrc, fdst[, length=16*1024]) 将文件内容拷贝到另一个文件中,可以指定大小的 内容 import shutil shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w')) shutil.copyfile(src, dst) 拷贝文件 shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在,copyfile调用了copyfileobj shutil.copymode(src, dst) 仅拷贝权限。内容、组、用户均不变

C++ vector初始化方式

空扰寡人 提交于 2019-12-05 02:39:11
C++的初始化方法很多,各种初始化方法有一些不同。 (1): vector<int> ilist1; 默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。 (2): vector<int> ilist2(ilist); vector<int> ilist2 = ilist; 两种方式等价 ,ilist2 初始化为ilist 的拷贝,ilist必须与ilist2 类型相同,也就是同为int的vector类型,ilist2将具有和ilist相同的容量和元素 (3): vector<int> ilist = {1,2,3.0,4,5,6,7}; vector<int> ilist {1,2,3.0,4,5,6,7}; ilist 初始化为列表中元素的拷贝,列表中元素必须与ilist的元素类型相容,本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换。 (4): vector<int> ilist3(ilist.begin()+2,ilist.end()-1); ilist3初始化为两个迭代器指定范围中元素的拷贝,范围中的元素类型必须与ilist3 的元素类型相容,在本例中ilist3被初始化为{3,4,5,6}。注意

Python:浅拷贝和深拷贝

自作多情 提交于 2019-12-05 02:23:12
copy.copy(x)方法返回x的浅拷贝,copy.deepcopy(x)方法返回x的深拷贝 浅拷贝构造了一个新的复合对象, 然后把原来的对象引用直接插入到新对象中 深拷贝构造了一个新的复合对象, 开辟新的内存空间, 然后递归的将原对象中的内容进行复制,并插入新对象 来源: https://www.cnblogs.com/mafy/p/11897518.html

深拷贝、浅拷贝

↘锁芯ラ 提交于 2019-12-05 00:56:38
一、定义 当我们将对象A拷贝到对象B当中时, 浅拷贝是指, 修改B对象的属性和方法会影响到A对象的属性和方法, 我们称之为浅拷贝 深拷贝是指, 修改B对象的属性和方法不会影响到A对象的属性和方法, 我们称之为深拷贝 二、实例: 深拷贝: 一般基本类型之间的拷贝都是深拷贝,被拷贝对象和拷贝对象之间只是初始值一样,在拷贝完成之后,两个变量之间毫无关系。但是对象之间要是通过赋值的方式进行拷贝的话,得到的就是浅拷贝,一个对象指针属性的改变就会影响到另一个对象指针中的属性值。对象的深拷贝可以采用构造方法实现: 深拷贝的构造方法:若对两个Point类进行深拷贝,其中属性为+x,+y //形参为一个对象指针 public Point(Point object){ this.x = x; this.y = y; } 然后在main()方法中创建两个对象指针 Point point1 = new Point(); Point point1 = point1; 这样创建的point1和point2之间只是初始属性值一样而已,两者时间是没有关系的。 对象之间的浅拷贝 :一般的对象之间的赋值只是将一个对象的指针赋值给了另外一个对象指针,那么这两个指针都同时指向了同一个对象,所以只要有一个指针改变的对象中的属性,那么用另外一个指针进行访问的时候,属性的值也是改变的。如下图: 来源: https://www

BeanUtils.copyProperties() 在两个不同包下的用法及区别

a 夏天 提交于 2019-12-04 23:52:05
这两天做项目,用到了BeanUtils.copyProperties()这个方法,而在两个不同的类中使用到这个方法,但不知怎么的,就是有一个对象服务发copy另外个对象,最后排查终于找到原因。 因为两个类引入了两个不同的BeanUtils类, 一个是 org.springframework.beans.BeanUtils, 另一个是org.apache.commons.beanutils.BeanUtils, 这两个类在不同的包下面,而这两个类的copyProperties()方法里面传递的参数赋值是相反的。 例如:a,b为对象,BeanUtils.copyProperties(a, b)的两个包对应的用法: BeanUtils是org.springframework.beans.BeanUtils ===》 a拷贝到b BeanUtils是org.apache.commons.beanutils.BeanUtils ===》 b拷贝到a 来源: oschina 链接: https://my.oschina.net/u/914271/blog/1809991

ARM64 的 memcpy 优化与实现

梦想的初衷 提交于 2019-12-04 22:21:08
参考:https://www.byteisland.com/arm64-%E7%9A%84-memcpy-%E6%B1%87%E7%BC%96%E5%88%86%E6%9E%90/ libc/string.c 拷贝是一个字节一个字节拷贝,太慢了,现在的系统支持4/8字节拷贝,甚至16字节拷贝,故linux内核针对拷贝做了优化 copy_templat.S, 详见链接文章 来源: https://www.cnblogs.com/zengjianrong/p/11886714.html

python基础之深浅拷贝

此生再无相见时 提交于 2019-12-04 21:28:48
深浅拷贝: 对于字符串(str),数字(int),布尔类型(bool)等类型深浅拷贝都是开辟新内存 对于列表(list),集合(set),字典(dict)深浅拷贝可变类型都一样,如[1,2,3] 对于列表(list),集合(set),字典(dict)存在嵌套的深浅拷贝不一样,如[1,2,3,[4,5,6]],浅拷贝只拷贝[1,2,3],深拷贝[1,2,3,[4,5,6]] 浅拷贝:拷贝第一层 深拷贝:拷贝所有数据(可变) 应该每次都拷贝一份(但由于小数据池,未拷贝) v = 'sundy' import copy v1 = copy.copy(v) v2 =copy.deepcopy(v) print(id(v),id(v1)) print(id(v),id(v2)) D:\python3.6\python3.6.exe D:/python_code/day01/day06.py 1761132524464 1761132524464 1761132524464 1761132524464 v = [1,2,3,4] import copy v1 = copy.copy(v) v2 =copy.deepcopy(v) print(id(v),id(v1)) print(id(v),id(v2)) D:\python3.6\python3.6.exe D:/python_code