深拷贝浅拷贝
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深拷贝浅拷贝相关的知识,希望对你有一定的参考价值。
一、关于str、list在内存中如何存储的。
1、str 一次性创建只要修改其内存位置就会改变,且要给新的值一个新的变量。(字符串的内容都储存在同一个内存的位置,如果索引两个不同的字符串,其id地址一样)
2、list 因其内部关系是链表式 所以可以增删改 其变量的内存位置仍然不会改变,且其内部相同的值也指向同一处内存。
二、拷贝copy
1、特性:拷贝过来的值,其id和老的id同指一处内存地址。
2、数字及字符串的copy(深浅copy 对于int、str 效果是一样的):
数字及字符串的copy,它们新老变量的id地址永远一致。
老师讲解时提到,数字、字符串赋值,它们的id地址也不变, 我认为他们变或者不变是根据他们的值所决定的,在电脑内存中python有一个规定的范围,只要你的值是在这个规定的范围内,那么只要你们的值相同,变量不同,你们的id地址也是指向同一处的,相反超出这个范围,id地址是不同的。
3、深浅拷贝copy:
特性:适用于 在拥有多层关系的tuple、list、dict中。
浅拷贝:例如、b是a的浅拷贝,那么b和a的变量内存地址是不相同的,但是b和a的变量内部值的内存地址是相同的。
深拷贝:变量和其内部值内存地址都是相同的。
浅拷贝
深拷贝
以上是关于深拷贝浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章