Python —— 数据容器详解

数据容器是编程语言中最基础的组成部分,Python 提供了丰富的数据容器类型(列表、元组、集合、字典),本文将从定义、操作、特性等方面系统梳理这些容器的使用方法。

一、列表(List)

1. 定义

# 基本定义
list1 = [1, 2, 3, "hello"]  # 异构元素
list2 = list()               # 空列表
list3 = [i for i in range(5)]# 列表推导式

2. 索引与切片

# 正向索引
print(list1[0])  # 输出: 1

# 反向索引
print(list1[-1]) # 输出: hello

# 切片操作
print(list3[1:4]) # 输出: [1, 2, 3]

3. 常用操作

# 增删改
list1.append(4)        # 追加元素
list1.insert(2, "new") # 插入元素
list1.remove("hello")  # 删除元素
list1[0] = 100         # 修改元素

# 排序与反转
list3.sort(reverse=True) # 降序排序
list3.reverse()         # 反转列表

4. 遍历方式

# 基础遍历
for item in list1:
    print(item)

# 带索引遍历
for idx, val in enumerate(list1):
    print(f"Index {idx}: {val}")

二、元组(Tuple)

1. 定义

# 基本定义
tuple1 = (1, 2, "world")
tuple2 = 3, 4, 5          # 省略括号
tuple3 = tuple([1, 2, 3]) # 转换构造

2. 特性说明

  • 不可变性:元组一旦创建,元素不可修改
  • 轻量级:内存占用比列表小
  • 多值返回:函数返回多值本质是返回元组

三、集合(Set)

1. 定义

# 基本定义
set1 = {1, 2, 3, 3}      # 自动去重
set2 = set("hello")      # 字符集合
set3 = set()             # 空集合

2. 集合操作

# 成员运算
print(2 in set1) # 输出: True

# 集合运算
setA = {1,2,3}
setB = {3,4,5}
print(setA.union(setB))   # 并集 {1,2,3,4,5}
print(setA.intersection(setB)) # 交集 {3}

四、字典(Dictionary)

1. 定义

# 基本定义
dict1 = {"name": "Tom", "age": 18}
dict2 = dict([("a",1), ("b",2)]) # 键值对列表
dict3 = {k: v for k, v in zip(["x","y"], [10,20])} # 推导式

2. 常用操作

# 增删改查
dict1["gender"] = "male" # 新增键值对
print(dict1.get("age"))  # 查询值
del dict1["age"]         # 删除键

# 遍历方式
for key in dict1:
    print(key, dict1[key])

for k, v in dict1.items():
    print(k, v)

五、数据容器通用操作

操作类型 适用容器 示例代码
长度获取 所有容器 len(container)
成员检查 所有容器 value in container
切片操作 列表 / 元组 / 字符串 container[start:end]
迭代遍历 所有容器 for item in container
类型转换 所有容器 list()/tuple()/set()/dict()

六、性能对比

操作类型 列表 元组 集合 字典
随机访问 O(1) O(1) O(1) O(1)
插入 / 删除 O(n) 不支持 O(n) O(n)
成员检查 O(n) O(n) O(1) O(1)
内存占用 中等 最小 较大 最大

注意:集合和字典的高效查询基于哈希表实现,但会消耗更多内存

总结

  • 列表:动态数组,支持增删改查,最常用容器
  • 元组:不可变序列,适合固定数据存储
  • 集合:无序去重,高效成员检查
  • 字典:键值对存储,快速查找


细节决定成败!
个人愚见,如有不对,恳请斧正!

posted @ 2025-03-28 10:10  一点浩然气~  阅读(130)  评论(0)    收藏  举报