首页
学习
活动
专区
工具
TVP
发布

第23 p,重要知识,列表在内存中的存储方式。【重要】

大家好,我是杨数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原创,欢迎关注,带你一起长知识。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200618A02FDR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券