Python核心数据结构
侧边栏壁纸
  • 累计撰写 11 篇文章
  • 累计收到 1 条评论

Python核心数据结构

tqtqtq
2026-03-15 / 0 评论 / 1 阅读 / 正在检测是否收录...

Python核心数据结构

1. List(列表):灵活的多面手

列表是 Python 中最常用的数据结构,就像一个可以随时增删改查的动态数组。

  • 特性有序(按添加顺序排列)、可变(随时可以修改元素)、允许重复
  • 适用场景:需要按顺序存储同类或不同类数据,且后续需要频繁修改数据的场景(如:待办事项列表、爬虫抓取的数据集)。

创建与核心操作

# 创建列表
my_list = [1, 2, "hello", 3.14, 1]

# 增加元素
my_list.append([3, 4])      # 在末尾追加,将列表 [3, 4] 作为单个元素添加,结果为:[1, 2, "hello", 3.14, 1, [3, 4]]
my_list.insert(1, "插入")    # 在指定索引位置插入
my_list.extend([4, 5])       # 将另一个列表的元素拆散合并进来

# 删除元素
my_list.remove("hello")      # 删除第一个匹配的元素
popped_item = my_list.pop()  # 移除并返回最后一个元素

# 修改与查询
my_list[0] = 100             # 修改指定索引的值
print(my_list[1])            # 通过索引访问

2. Tuple(元组):带锁的列表

元组和列表非常相似,但它一旦创建,里面的元素就不能被修改(Immutable)。

  • 特性有序不可变允许重复
  • 适用场景:存储不需要更改的数据(如:地理坐标经纬度、数据库查询返回的单条记录)。因为不可变,元组的内存占用比列表小,遍历速度稍快,且可以作为字典的 Key(键)。

创建与核心操作

# 创建元组
my_tuple = (1, 2, "hello", 1)
single_tuple = (1,)  # 注意:只有一个元素的元组必须加逗号

# 访问元素 (与列表相同)
print(my_tuple[0])   # 输出: 1

# 核心方法 (因为不可变,所以只有查询方法)
print(my_tuple.count(1))     # 统计元素 1 出现的次数 (输出: 2)
print(my_tuple.index("hello")) # 查找元素的索引位置

"""
如果尝试修改,会抛出TypeError: 't = (1, 2, 3)
result = t[0] = 100  # 尝试修改
tuple' object does not support item assignment
"""
注意:虽然元组本身不可变,但如果元组里面包含可变对象(如列表),该列表内部的元素是可以修改的。

3. Dict(字典):高效的键值对

字典就像一本真正的字典,通过唯一的词条(Key)去快速查找对应的释义(Value)。

  • 特性键值对映射可变Key 必须唯一且不可变(如字符串、数字、元组)、Value 可以是任意类型(注:Python 3.7+ 版本后,字典默认保留插入顺序)
  • 适用场景:需要通过特定标识符快速检索数据的场景(如:用户个人信息、配置参数存储、JSON数据处理)。

创建与核心操作

# 创建字典
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

# 增加/修改元素
my_dict["job"] = "Engineer"  # 增加新键值对
my_dict["age"] = 26          # 修改已有键的值

# 删除元素
del my_dict["city"]          # 删除键值对
age = my_dict.pop("age")     # 移除并返回对应的值

# 查询元素
print(my_dict["name"])       # 可能会触发 KeyError 如果键不存在
print(my_dict.get("phone", "Not Found")) # 安全获取,不存在则返回默认值

# 遍历字典
for key, value in my_dict.items():
    print(f"{key}: {value}")

4. Set(集合):去重与数学运算利器

集合就像是一个没有 Value 的字典,它里面只存放独一无二的元素。

  • 特性无序(不支持索引)、可变元素必须唯一且不可变
  • 适用场景:数据快速去重、测试成员是否属于某个群体、进行数学集合运算(交集、并集、差集)。

创建与核心操作

# 创建集合
my_set = {1, 2, 3, 3, 4}     # 重复的 3 会被自动过滤,结果为 {1, 2, 3, 4}
empty_set = set()            # 注意:空集合必须用 set(),不能用 {} (那是空字典)

# 增删元素
my_set.add(5)                # 增加元素
my_set.remove(2)             # 移除元素 (如果不存在会报错)
my_set.discard(10)           # 移除元素 (不存在不会报错)

# 集合数学运算
set_a = {1, 2, 3}
set_b = {3, 4, 5}

print(set_a | set_b)  # 并集: {1, 2, 3, 4, 5} (也可用 set_a.union(set_b))
print(set_a & set_b)  # 交集: {3} (也可用 set_a.intersection(set_b))
print(set_a - set_b)  # 差集: {1, 2} (也可用 set_a.difference(set_b))

综合对比总结

数据结构符号有序性可变性是否允许重复核心优势 / 用途
List (列表)[]有序可变允许灵活存储和操作一连串数据
Tuple (元组)()有序不可变允许保护数据不被修改,比列表更省内存
Dict (字典){}保持插入顺序可变Key 唯一,Value 允许极其快速的键值查找 (O(1) 复杂度)
Set (集合){}无序可变不允许快速去重,强大的集合数学运算
0

评论 (0)

取消