Python3 数据结构知识点汇总
编程小白也能看懂的数据结构详解
数据结构是编程中组织和存储数据的方式,Python提供了几种内置的数据结构,每种都有不同的特点和用途。本指南将用简单易懂的语言介绍Python中最常用的数据结构。
列表
(List)
(List)
元组
(Tuple)
(Tuple)
字典
(Dict)
(Dict)
集合
(Set)
(Set)
1. 列表 (List)
什么是列表?
列表就像是一个可以装很多东西的”购物袋”,你可以往里面放任何类型的东西(数字、文本、甚至其他列表),而且袋子里的东西可以随时增加、减少或修改。
特点:
- 可变:创建后可以修改(增删改)
- 有序:元素有固定顺序(按添加顺序排列)
- 可重复:允许包含相同的元素
- 索引访问:通过位置(索引)获取元素,从0开始
常用操作:
my_list = [1, 2, 3]
– 创建列表my_list.append(4)
– 在末尾添加元素my_list.insert(1, "a")
– 在指定位置插入元素my_list.remove(2)
– 删除指定元素my_list[0] = 100
– 修改元素len(my_list)
– 获取列表长度
使用场景:
- 需要存储多个相关项(如学生姓名列表)
- 需要经常修改数据集合
- 需要保持元素的添加顺序
代码示例:
# 创建列表 fruits = ["苹果", "香蕉", "橙子"] # 添加元素 fruits.append("葡萄") # 现在为 ["苹果", "香蕉", "橙子", "葡萄"] # 访问元素 print(fruits[0]) # 输出: 苹果 # 修改元素 fruits[1] = "芒果" # 现在为 ["苹果", "芒果", "橙子", "葡萄"] # 删除元素 fruits.remove("橙子") # 现在为 ["苹果", "芒果", "葡萄"] # 遍历列表 for fruit in fruits: print(fruit)
2. 元组 (Tuple)
什么是元组?
元组就像是一个”密封的盒子”,一旦创建就不能修改。它用于存储一组不可变的数据,类似于列表但更安全。
特点:
- 不可变:创建后不能修改(不能增删改)
- 有序:元素有固定顺序
- 可重复:允许包含相同的元素
- 访问快:比列表访问速度更快
常用操作:
my_tuple = (1, 2, 3)
– 创建元组my_tuple[0]
– 访问元素len(my_tuple)
– 获取元组长度tuple1 + tuple2
– 连接元组my_tuple.count(2)
– 计算元素出现次数
使用场景:
- 存储不应更改的数据(如日期、坐标)
- 作为字典的键(因为不可变)
- 函数返回多个值时
代码示例:
# 创建元组 point = (10, 20) # 访问元素 x = point[0] # x = 10 y = point[1] # y = 20 # 元组解包 width, height = (800, 600) # 作为字典的键 locations = {(35.68, 139.76): "东京", (40.71, -74.00): "纽约"} # 尝试修改元组会出错 # point[0] = 15 # 报错: 'tuple' object does not support item assignment
3. 字典 (Dict)
什么是字典?
字典就像一本”电话簿”,通过名字(键)查找电话号码(值)。每个键对应一个值,键必须是唯一的。
特点:
- 键值对:存储键和对应的值
- 可变:可以添加、修改、删除键值对
- 无序:Python 3.7+ 后保持插入顺序
- 键唯一:不允许重复键
- 快速查找:通过键快速访问值
常用操作:
my_dict = {"name": "Alice", "age": 30}
– 创建字典my_dict["name"]
– 通过键获取值my_dict["age"] = 31
– 修改值my_dict["city"] = "北京"
– 添加新键值对del my_dict["age"]
– 删除键值对"name" in my_dict
– 检查键是否存在
使用场景:
- 存储具有关联关系的数据(如用户信息)
- 需要快速查找数据的场景
- 数据分类和分组
代码示例:
# 创建学生字典 student = { "name": "张三", "age": 20, "courses": ["数学", "英语", "编程"] } # 访问数据 print(student["name"]) # 输出: 张三 # 添加新数据 student["gender"] = "男" # 修改数据 student["age"] = 21 # 删除数据 del student["courses"] # 遍历字典 for key, value in student.items(): print(f"{key}: {value}") # 安全访问 phone = student.get("phone", "未知") # 如果phone不存在返回"未知"
4. 集合 (Set)
什么是集合?
集合就像是一个”不重复的袋子”,里面装着一堆不重复的元素,没有顺序。主要用于去重和数学运算(交集、并集等)。
特点:
- 无序:元素没有固定顺序
- 元素唯一:不允许重复元素
- 可变:可以添加或删除元素(frozenset不可变)
- 数学运算:支持交集、并集、差集等操作
常用操作:
my_set = {1, 2, 3}
– 创建集合my_set.add(4)
– 添加元素my_set.remove(2)
– 删除元素len(my_set)
– 获取元素数量set1 | set2
– 并集(两个集合所有元素)set1 & set2
– 交集(两个集合共有元素)
使用场景:
- 去除列表中的重复元素
- 检查元素是否存在(比列表快)
- 数学集合运算
代码示例:
# 创建集合 fruits = {"苹果", "香蕉", "橙子", "苹果"} # 重复的"苹果"会被自动去除 # 添加元素 fruits.add("葡萄") # 删除元素 fruits.remove("香蕉") # 检查存在 if "苹果" in fruits: print("有苹果") # 集合运算 setA = {1, 2, 3, 4} setB = {3, 4, 5, 6} print(setA | setB) # 并集: {1, 2, 3, 4, 5, 6} print(setA & setB) # 交集: {3, 4} print(setA - setB) # 差集: {1, 2} # 列表去重 numbers = [1, 2, 2, 3, 4, 4, 5] unique = set(numbers) # {1, 2, 3, 4, 5}
5. 数据结构对比
特性 | 列表(List) | 元组(Tuple) | 字典(Dict) | 集合(Set) |
---|---|---|---|---|
可变性 | 可变 | 不可变 | 可变 | 可变 |
顺序 | 有序 | 有序 | Python 3.7+有序 | 无序 |
重复元素 | 允许 | 允许 | 键不允许重复 | 不允许 |
索引方式 | 数字索引 | 数字索引 | 键索引 | 不支持索引 |
访问速度 | 中等 | 快 | 非常快 | 非常快 |
典型用途 | 存储可变序列 | 存储不可变数据 | 键值对关联数据 | 去重和集合运算 |
6. 总结
Python提供了多种数据结构,每种都有其特定的优势和适用场景:
- 需要修改数据? → 使用列表
- 数据不应被更改? → 使用元组
- 需要键值关联? → 使用字典
- 需要去重或集合运算? → 使用集合
理解每种数据结构的特点和适用场景,是编写高效Python代码的关键。随着编程经验的积累,你会更自然地知道在何时使用何种数据结构。