写Python后端代码时,几乎每天都要面对一个选择:把多个值塞进一个变量,用列表(List)还是元组(Tuple)?
很多初学者觉得这俩差不多——都能存数据,都能用下标访问。但它们在内存里的工作方式完全不同,这种差异直接决定了你的代码是跑得快还是跑得慢。今天这篇拆解,就把这两个数据结构的区别讲透。
![]()
先看一个最直观的差异:能不能改
假设你定义了两个变量:my_data = [10, 20] 和 user_data = (10, 20)。表面上看,它们都存了两个整数,但本质上天差地别。
如果你的脚本需要在运行过程中动态地追加(append)、弹出(pop)或者修改某个值,那么你必须使用列表。因为列表是可变(mutable)的,你可以随时改变它的内容。而元组是不可变(immutable)的——一旦创建,里面的元素就不能增删改。
这个特性决定了它们的应用场景:需要动态操作的数据用列表,固定不变的数据用元组。
为什么元组在内存处理上更快?
这是很多工程师面试时会被问到的问题。答案藏在它们的底层实现里。
列表是动态数组,Python为了让你能随时往里面加东西,会在内存中预留一部分额外空间。当你追加元素时,如果预留空间不够,Python还得重新分配一块更大的内存,把旧数据复制过去。这个过程有开销。
元组则完全不同。因为它的长度固定不变,Python在创建元组时就直接分配恰好大小的内存,不需要预留空间,也不需要扩容复制。少了这些额外操作,元组的创建和访问速度自然比列表快,内存占用也更紧凑。
实际写代码时怎么选?
判断标准其实很简单:
- 数据需要增删改 → 用列表
- 数据是固定的(比如坐标、配置项、函数返回多个值)→ 用元组
- 数据量很大且只读 → 优先考虑元组,能省内存
很多性能敏感的代码里,把只读的列表换成元组,能明显减少内存占用。这也是Python官方文档推荐的做法。
别再看零散教程了
这类数据结构的知识点,散落在各种教程里,东拼西凑很难形成体系。与其到处找资料,不如系统性地过一遍。目前有一套完全开放获取的10节课Python指南,把数据结构讲得很干净,不需要注册,也没有隐藏收费,直接就能看。想拿完整代码块的,可以去 makuistudio.com 看看。
最后留个思考题:如果你要写一个函数,返回一个点的坐标(x, y),你会用列表还是元组?评论区聊聊你的选择。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.