刚开始学Python的时候,是不是经常被各种数据结构绕晕?
明明都是存数据,列表、元组、字典、集合到底该用哪个?今天我们用最直观的方式把它们讲透。
🔍 一、先搞懂最基础的分类
Python里常用的容器类数据结构,其实可以归为三大类:
- 序列类型:列表(list)、元组(tuple)、字符串(str)
- 映射类型
- 集合类型
它们最核心的区别,就在于元素的存储方式和访问规则。
📌 1、序列类型:按位置顺序存储
序列的最大特点是元素有序、可重复,每个元素都有对应的索引下标。
# 列表(可变序列) my_list = [1, 2, 3, "apple"] print(my_list[0]) # 通过索引访问第一个元素:1 # 元组(不可变序列) my_tuple = (1, 2, 3) my_tuple[0] = 4 # 报错:元组不允许修改
提示:序列都支持切片、遍历、拼接操作,可变和不可变的区别仅在于创建后能否修改元素。
📌 2、字典:键值对一一映射
字典存储的是键(key)-值(value)对,通过键来访问值,而不是索引。
my_dict = {"name": "张三", "age": 20} print(my_dict["name"]) # 通过key访问value:张三 # key必须是不可变类型(字符串、数字、元组),且唯一不重复
Python 3.7+版本中字典默认保留插入顺序,但核心访问逻辑还是依赖key而非位置。
📌 3、集合:无序不重复的元素集
集合的特点是元素无序、唯一,底层用哈希表实现,天然支持去重和集合运算。
my_set = {1, 2, 2, 3} print(my_set) # 自动去重:{1, 2, 3} # 支持交集、并集、差集等操作 print({1,2,3} & {2,3,4}) # 交集:{2,3}
注意:集合无法通过索引访问元素,因为本身没有顺序概念。
💡 二、一张表搞懂所有差异
我把三类数据结构的核心特性整理成了对比表,建议保存:
🎯 三、实际开发怎么选?
记住三个最典型的使用场景,90%的情况都不会选错:
- ✅ 按顺序存储同类型/不同类型数据,需要按位置访问 → 用列表/元组
- ✅ 需要存储一一对应的映射关系,通过键快速查询 → 用字典
- ✅ 需要快速去重、判断元素是否存在、做集合运算 → 用集合
举个最常见的例子:统计一篇文章里的单词出现次数,就可以用字典存统计结果,用集合做单词去重。
words = ["apple", "banana", "apple", "orange", "banana", "apple"] # 用字典统计次数 count = {} for word in words: count[word] = count.get(word, 0) + 1 print(count) # {'apple': 3, 'banana': 2, 'orange': 1} # 用集合获取不重复单词 unique_words = set(words) print(unique_words) # {'apple', 'banana', 'orange'}
今天的内容就到这里,是不是比死记硬背概念好懂多了?
可以试着写一段代码,分别用三类数据结构存你的个人信息,感受下差异~
如果觉得有用,欢迎点个赞、转发给身边的Python初学者😊