数据结构基础知识补充
一、列表(List)
✅ 定义与特点:
a = [1, "str", True]
-
有序、可变
-
支持增删改查(append, remove, insert, pop 等)
-
元素类型不限制
-
底层为动态数组
🧠 实际开发例子:
-
批量存储用户输入
user_inputs = [] for _ in range(3): user_inputs.append(input("Enter a value: "))
-
处理 CSV 数据行
import csv with open("data.csv") as f: reader = csv.reader(f) rows = [row for row in reader]
👍 优点:
-
灵活,能存储任意类型
-
操作丰富,语法简洁
👎 缺点:
-
查找慢(O(n))
-
占内存比 array 大
-
不适合大规模数值计算(推荐用 numpy)
二、元组(Tuple)
✅ 定义与特点:
b = (1, "data", 3.14)
-
有序、不可变
-
支持索引访问
-
可作为 dict 的键
🧠 实际开发例子:
-
函数多返回值
def get_stats(): return (200, "OK") status_code, message = get_stats()
-
缓存系统中的复合键
cache = {} user_id, item_id = 42, 100 cache[(user_id, item_id)] = "cached_result"
👍 优点:
-
数据安全,不易被修改
-
可用于 dict key、set 元素
👎 缺点:
-
无法修改,需整体替换
-
可读性差于命名元组(建议用
namedtuple
)
三、字典(Dict / 哈希表)
✅ 定义与特点:
c = {"name": "Alice", "age": 30}
-
无序(Python 3.7+ 实际有序)
-
键必须可哈希(如 str、int、tuple)
-
查找速度快,O(1)
🧠 实际开发例子:
-
JSON 数据处理
import json user_data = json.loads('{"id": 1, "name": "Tom"}')
-
配置文件解析
config = {"host": "localhost", "port": 8080}
-
计数器功能
counts = {} for item in ['a', 'b', 'a']: counts[item] = counts.get(item, 0) + 1
👍 优点:
-
快速键值映射
-
语义清晰(键名表达含义)
👎 缺点:
-
键要求不可变对象
-
内存占用较大
四、数组(array.array)
✅ 定义与特点:
import array d = array.array('i', [1, 2, 3])
-
元素类型统一(如整数
'i'
) -
占用内存少,操作快
-
不支持混合类型
🧠 实际开发例子:
-
从传感器读取大量整数数据
import array sensor_data = array.array('h') # short 类型 sensor_data.frombytes(serial_input.read(64))
-
高效存储图片像素值
grayscale_pixels = array.array('B', [0, 128, 255])
👍 优点:
-
节省内存(比 list 更轻)
-
性能高于 list(但低于 NumPy)
👎 缺点:
-
类型固定
-
使用不如 list 灵活
五、哈希表(由 Dict 实现)
✅ 定义与特点:
-
哈希表并非 Python 原语,但 dict 是其直接实现
-
基于哈希函数进行快速键值定位
🧠 实际开发例子:
-
URL 缓存系统
cache = {} def get_page(url): if url in cache: return cache[url] response = fetch_url(url) cache[url] = response return response
-
计数和分组操作
from collections import defaultdict groups = defaultdict(list) for name, dept in employees: groups[dept].append(name)
👍 优点:
-
极快的查找和插入(O(1))
-
基础结构强大,支持多种映射用途
👎 缺点:
-
哈希冲突需处理
-
键必须是可哈希对象
六、对比总结表格:
特性 | list | tuple | dict | array | hash table |
---|---|---|---|---|---|
可变性 | ✅ | ❌ | ✅ | ✅(但元素类型固定) | ✅(底层实现) |
有序性 | ✅ | ✅ | ✅(3.7+) | ✅ | ❌ |
元素类型 | 任意 | 任意 | 键值任意 | 限定(如整数) | 限定键需可哈希 |
查找性能 | O(n) | O(n) | O(1) | O(n) | O(1) |
内存效率 | 一般 | 高 | 较高 | 高 | 较高 |
适用场景 | 一般集合 | 固定数据 | 映射存储 | 数值密集型 | 快速检索 |
🔚 建议使用场景小结:
任务类型 | 推荐结构 | 原因 |
---|---|---|
有序集合,需要频繁修改 | list | 灵活易用 |
多值返回,不可修改 | tuple | 安全性高,支持解构 |
需要键值存储,频繁查找 | dict | 查找快,结构清晰 |
数值密集型,如图像、传感器数据 | array / numpy | 节省内存,性能好 |
快速索引,缓存优化 | dict (哈希表) | 支持 O(1) 访问,广泛用于缓存等高性能应用 |