首页 >> 手游攻略

女朋友说被L过是什么意思

今天给各位分享女朋友说被L过是什么意思的知识,其中也会对女朋友问我深浅copy到底是什么?进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

深浅拷贝

列表存放值的时候,是先申请一块内存空间,存放索引和内存地址的对应关系,其实通俗的来说列表内不存真正的值,是一种间接存放的对应关系;

列表内存不可变类型的数据

就比如说,如果现在将L列表索引0位置的值修改为66,那么这个过程发生了什么?通俗理解为去L[0]去值11的路被销毁了,现在通往了值66,那么这个对应关系就修改了,再次索引出来的L[0]就是66

不管是一维的还是二维的道理都是如此;

二维

浅拷贝

只拷贝了一层,后续需要结合可变与不可变类型理解来决定,

如果一维列表内没有可变类型,其实浅拷贝的影响并不大,如果一维列表内有可变类型的元素,那么就会造成影响

l=[11,22,['xx','yy']]n'''l列表是二维的,列表套列表的结构'''nn#浅拷贝nnew_l=[:]n#修改原列表nl[2][0]='zz'nprint('新列表',new_l)#新列表[11,22,['zz','yy']]nprint('源列表',l)#原列表[11,22,['zz','yy']]nprint(id(l[0]),id(l[1]),id(l[2]))#162761944016276194722225456877448nprint(id(new_l[0]),id(new_l[1]),id(new_l[2]))#162761944016276194722225456877448n'''n总结:不论修改原列表还是新列表,修改列表内的不可变类型元素不会对原列表或新列表造成影响,如果修改的是列表内的可变类型元素,那么原列表或新列表会随着修改而修改n原理:拷贝对于不可变类型来说拷贝的是值,但是拷贝对于可变类型元素来说拷贝的是对应关系,可以通过查看原列表和新列表的id值来验证,id值是一样的tn'''

总结:不论修改原列表还是新列表,修改列表内的不可变类型元素不会对原列表或新列表造成影响,如果修改的是列表内的可变类型元素,那么原列表或新列表会随着修改而修改

原理:拷贝对于不可变类型来说拷贝的是值,但是拷贝对于可变类型元素来说拷贝的是对应关系,可以通过查看原列表和新列表的id值来验证,id值是一样的

修改值发生了什么变化?

不可变类型:任然不变

可变类型:跟着改变

深拷贝

深拷贝其实就是对浅拷贝不能处理的可变类型进行处理,对应关系更深一层copy;

我们潜意识理解的拷贝,拷贝出来一份你玩你的我玩我的互不影响,深copy就做到如此;

导入:fromcopyimportdeepcopy

fromcopyimportdeepcopynl=[11,22,['xx','yy']]nnew_l=deepcopy(l)nprint(l,id(l))#[11,22,['xx','yy']]1305767841288nprint(new_l,id(new_l))#[11,22,['xx','yy']]1305767841352nprint(id(l[0]),id(l[1]),id(l[2]))#162761976016276201122688776670984nprint(id(new_l[0]),id(new_l[1]),id(new_l[2]))#162761976016276201122688776669256nn'''n列表的id值不一样就代表着这两个列表是不同的列表,两个完全不一样的对象,子列表也是一样n'''n'''不可变类型的id还是一样,不可变类型的id就不一样了,那么列表就相当于造了一个新的列表了'''

现在再修改哪个值都不会对原列表或新列表有影响现在修改值只需修改对应关系再指向新值就可以了

本文来自https://www.cnblogs.com/48xz/p/16041389.html

好了,文章到此结束,希望可以帮助到大家。



本文由欣欣吧手游攻略栏目发布,感谢您对欣欣吧的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“女朋友说被L过是什么意思

标签:
女朋友的母亲9有限中字
« 上一篇 2023-10-19