Python3 数据结构

Python3数据结构知识点汇总

Python3 数据结构知识点汇总

编程小白也能看懂的数据结构详解

数据结构是编程中组织和存储数据的方式,Python提供了几种内置的数据结构,每种都有不同的特点和用途。本指南将用简单易懂的语言介绍Python中最常用的数据结构。

列表
(List)
元组
(Tuple)
字典
(Dict)
集合
(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代码的关键。随着编程经验的积累,你会更自然地知道在何时使用何种数据结构。

Python3 数据结构指南 | 为编程小白设计 | 建议收藏学习

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部