码迷,mamicode.com
首页 > 其他好文 > 详细

小数据池、集合和深浅拷贝的个人理解

时间:2019-08-08 21:40:24      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:内存地址   move   定义   代码   空间   epc   其他   nbsp   布尔值   

小数据池----缓存机制(驻留机制)

==:判断两边内容是否相等

is :判断基于内存地址进行判断

小数据池的数字范围-5~256

代码块:一个文件、一个函数、一个模块,终端中每一行是一个代码块

代码块支持的数据类型:数字:在同一个代码块中。只要内容相同就采用相同的内存地址(-6往后都不是)在做乘法的时候范围-5~256。数字在做乘法的时候不能使用浮点数(这些都是在cham中的结果)

                                          字符串:在同一代码块中,只要内容相同就采用相同的内存地址。乘法的时候总长度不能超过20。乘法的时候中文、特殊符号乘以1或0

                                          布尔值:在同一代码块中。只要内容相同就采用相同的内存值

小数据池:数字:范围是-5~256

                   字符串:在同一小数据池中,只要内容相同就采用相同的内存地址。乘法的时候总长度不能超过20。乘法的时候中文 、特殊符号乘以0。字母,数字长度任意符合驻留机制。

          

        布尔值:在同一小数据池中,只要内容相同就采用相同的内存地址

小数据池的验证法,必须脱离代码块才能进行验证。执行顺序:先执行代码块的规则,在执行小数据的规则--(驻留机制)

驻留机制作用:节省内存空间,提升效率(减少了开辟空间和销毁空间的时间)

集合

python中数据类型之一

集合----set:关键字

定义方式:s={1,2,3,4,}

集合就是一个没有值的字典。

无序,可变。集合自动去重。

增:s={}#字典

s1=set({})#空集合

s1.add()#添加

s1.update()#迭代添加

set()#迭代添加

删:s1.remove(元素)#删除

s1.clear()#清空

s1.pop()#随意删除

改:先删后加

查:for循环

其他操作:

s2={1,23,9,4,5,7}

s3={1,2,3,4,5}

差集-#print(s2-s3)

交集&#print(s2&s3)

并集|#print(s2|s3)

反交集^#print(s2^s3)

子集、父集(超集)

冻结集合:不可变了。可以当成字典的键。

frozenset({1,23,4,5})

深浅拷贝   复制

浅拷贝

面试必问:赋值,浅拷贝,深拷贝

以后尽量避免

lst.copy():浅拷贝#lst[:]

浅拷贝就是在源基础上就是开个框架,把公用的数据进行同样使用。但是浅拷贝和元数据的框架的是不一样的。

浅拷贝和源数据相比,如果源数据中元素进行变动,则浅拷贝的数值不进行变动。如果源数据中元素内进行添加或变动,浅拷贝的元素也会和源数据一起进行添加或变动。如果只是单独的元素直接被赋值,另外一方则不会变动。

赋值:将多个变量指向一个同一个内存地址就是赋值。

“=”是修改,.appedn是添加。可变数据类型能够修改和添加,不可变数据类型智能修改。

深拷贝

import copy #导入copy模块

a=[1,2,3,[4,5],6]

b=copy.deepcopy(a)

#深拷贝:不可变数据类型共享,可变数据类型新开辟一个空间

小数据池、集合和深浅拷贝的个人理解

标签:内存地址   move   定义   代码   空间   epc   其他   nbsp   布尔值   

原文地址:https://www.cnblogs.com/jianzhicangqiong/p/11323517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!