Python 数据结构综合速查:列表 / 字典 / 集合 / 元组对比
在 Python 编程中,最常用的四大内置数据结构就是 列表(list)、字典(dict)、集合(set) 和 元组(tuple)。无论是日常开发,还是技术面试,这四者都是高频考点。本文将带你快速梳理它们的特点、操作方式以及常见面试考点,帮助你建立全面清晰的认知。
一、列表(list)
特点:有序、可变、可重复。
常见用途:存放多个数据,支持索引和切片。
定义与访问
nums = [10, 20, 30]
print(nums[0]) # 10
print(nums[-1]) # 30
修改
nums[1] = 99
print(nums) # [10, 99, 30]
添加与删除
nums.append(40) # 末尾追加
nums.remove(10) # 删除指定值
print(nums) # [99, 30, 40]
应用场景:适合存放有序集合,比如任务队列、数据列表。
二、字典(dict)
特点:无序、可变、键唯一、键必须是不可变对象。
常见用途:存放键值对,快速查找。
定义与访问
person = {"name": "Alice", "age": 25}
print(person["name"]) # Alice
修改与新增
person["age"] = 26
person["city"] = "Beijing"
删除
del person["name"]
print(person) # {'age': 26, 'city': 'Beijing'}
应用场景:适合存储映射关系,如用户信息表、配置项。
三、集合(set)
特点:无序、可变、不重复,元素必须是不可变对象。
常见用途:去重、数学集合运算。
定义与去重
s = {1, 2, 2, 3, 4}
print(s) # {1, 2, 3, 4}
集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # 并集 {1, 2, 3, 4, 5}
print(a & b) # 交集 {3}
print(a - b) # 差集 {1, 2}
应用场景:适合快速去重、标签处理、关键词集合计算。
四、元组(tuple)
特点:有序、不可变、可重复。
常见用途:存放固定集合,用于函数返回多个值。
定义与访问
t = (1, 2, 3)
print(t[0]) # 1
不可修改
2. t[1] = 99 # 报错:TypeError
元组解包
x, y, z = t
print(x, y, z) # 1 2 3
应用场景:适合存放固定数据,如经纬度、RGB 值。
五、常见对比总结
1. 可变性
● 列表、字典、集合:可变
● 元组:不可变
2. 有序性
● 列表、元组:有序
● 字典(Python 3.7+ 保证插入顺序)、集合:无序
3. 是否允许重复
● 列表、元组:允许
● 字典键、集合:不允许重复
4. 典型应用
● 列表:顺序存储
● 字典:映射关系
● 集合:去重与集合运算
● 元组:不可变集合、函数多返回值
六、面试高频考点
1. 列表 vs 元组
● 列表可变,元组不可变。
● 元组因为不可变,通常更轻量,作为字典键或集合元素时必须用元组。
2. 字典键能否使用列表?
● 不行,因为列表是可变对象。
● 可以用元组作为字典键。
3. 集合的底层实现
● 基于哈希表,支持快速查找。
● 元素必须是可哈希对象,因此不能包含列表、字典。
4. 字典与 JSON 的区别
● Python 字典是内存对象,支持多种数据类型。
● JSON 是字符串格式,用于数据传输。
七、总结
● 列表(list):可变有序,用于存放多个数据。
● 字典(dict):键值对存储,适合快速查找。
● 集合(set):无序去重,支持集合运算。
● 元组(tuple):不可变序列,适合固定数据存放。
在实际开发中,正确选择数据结构不仅能让代码更简洁,还能大幅提升性能。面试中,考察的往往不是单一语法,而是能否理解它们的 特性、区别与应用场景。