大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第23篇文章,第二阶段的课程:Python基础知识:Python中的列表(二);很重要的内容,列表在内存中的存储方式。
学习本课程,建议先看一遍:【计算机基础知识】课程。
阅读说明:这个知识点非常重要,只要是我在文章中把字体加粗的部分都是重要的知识点;
如果我不仅把内容的字体加粗,还声明了【重要】,那这个知识点就是必考、必背的知识点,不理解没关系,多看几遍。
一、列表在内存中的存储方式【很重要】
1、变量赋值的底层原理
讲列表的存储方式之前,先复习一下前面讲的变量赋值的存储方式;
前面的文章中我们有提到,如果声明x = 10,计算机会进行以下3步操作:
在内存栈区中创建x这个变量名的名称空间;
在内存堆区中创建10这个值
等于号(=)表示赋值的意思,会把堆区中数据10的内存地址指向给栈区中变量名x。
所以,在计算机中的表示,并不是x等于10,而是x等于10这个值的内存地址。【重要】
2、列表在内存中的存储方式【重要】
声明一个列表 lista = [“杨数Tos”,],计算机底层会发生以下几件事:
(1) 在内存栈区中开辟一个名称空间,存放名字lista;
(2) 在内存的堆区中开辟一个内存空间,把列表放进去;同时,把列表指向字符串“杨数Tos”的内存地址;
(3) 将列表的内存地址赋值给lista。
所以,lista这个列表获得的是列表本身的内存地址。
二、为什么说列表是可变的?列表的可变指的是什么?
如果我将列表中”杨数Tos”修改成“我就是杨数”,再打印内存地址,你会发现lista这个列表的内存地址还是一样的。
为什么呢?【重点来了】
因为lista这个列表指向的是列表的内存地址,而不是列表中元素“杨数Tos”的内存地址;所以,无论我怎么修改lista内的元素,不管是添加、删除都不会改变lista这个列表的内存地址。
这就是列表可变的原因,列表可变是指列表中的元素是可变的,修改列表中的元素不会影响到列表本身在内存中的存储地址。
上面的内容如果你不理解 ,我可以用一个比喻说明;列表是一个瓶子,我们不管往瓶子里面放的是酒、还是水都不影响瓶子本身。
lista这个名字指向了列表,就相当于我们手里拿着瓶子,不管瓶子里面装水或是酒,都不会改变我们拿着的这个瓶子。
列表是一个容器,不管我们在容器里面放什么都不会影响容器本身。
你可尝试创建一个列表,然后修改、删除其中的元素,列表本身的内存地址都不会变;但是,如果你操作的是列表本身,如:lista = [111],这是重新定义了一个列表,并不是改变列表内的元素,所以列表在内存中的存储地址一定会变的。
最后:列表的可变是指列表中的元素修改后,不影响列表本身存储所在的内存地址;
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的关注点赞就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。
领取专属 10元无门槛券
私享最新 技术干货