无人机吊挂载荷系统的SEP-NMPC控制优化
2026/6/19 22:24:21
Python 提供了丰富且灵活的内置数据结构,用于高效地组织、存储和操作数据。这些数据结构可分为**可变(mutable)与不可变(immutable)**两大类,并根据其特性适用于不同场景。
以下是 Python 中最核心的6 种内置数据结构的详细介绍:
[]定义lst=[1,'hello',3.14,True]lst.append('new')# 添加元素lst[0]=100# 修改lst.insert(1,'x')# 在位置1插入lst.pop()# 删除并返回最后一个元素lst.remove('hello')# 删除第一个匹配项len(lst)# 长度⚠️ 注意:列表在头部插入/删除效率低(O(n)),此时可考虑
collections.deque
()定义(也可省略)tup=(1,'a',3.14)# tup[0] = 10 # ❌ 报错!不可变print(tup[1])# 'a'(x, y)、RGB 颜色){}定义,格式为{key: value}d={'name':'Alice','age':25}d['city']='Beijing'# 添加/修改print(d['name'])# 访问deld['age']# 删除键值对'name'ind# 检查键是否存在d.get('height',0)# 安全取值,不存在返回默认值{}定义(但空集合需用set())s={1,2,3,3}# 自动去重 → {1, 2, 3}s.add(4)s.remove(1)s.discard(10)# 不存在也不报错# 集合运算a={1,2,3}b={3,4,5}print(a|b)# 并集 → {1,2,3,4,5}print(a&b)# 交集 → {3}print(a-b)# 差集 → {1,2}list(set(my_list)))x in my_set比列表快得多)💡 不可变集合:
frozenset—— 可作为字典键或嵌套在其他集合中
' '或双引号" "定义s="Hello"s[0]# 'H's.upper()# 'HELLO'(返回新字符串)'lo'ins# Trues.split()# 分割''.join(['a','b'])# 拼接虽然不是“内置”关键字类型,但 Python 标准库提供了更专业的数据结构:
| 结构 | 所在模块 | 特点 |
|---|---|---|
deque | collections | 双端队列,两端高效插入/删除(O(1)) |
Counter | collections | 计数器,统计元素出现次数 |
defaultdict | collections | 带默认值的字典,避免 KeyError |
namedtuple | collections | 带字段名的元组,可读性更强 |
OrderedDict | collections | 显式保持插入顺序(Python 3.7+ 普通 dict 已具备) |
heapq | heapq | 最小堆实现,用于优先队列 |
array | array | 存储同类型基本数据,比列表更省内存 |
CounterfromcollectionsimportCounter cnt=Counter(['a','b','a','c'])print(cnt)# Counter({'a': 2, 'b': 1, 'c': 1})| 数据结构 | 可变? | 有序? | 允许重复? | 典型用途 |
|---|---|---|---|---|
| list | ✅ | ✅ | ✅ | 通用序列,动态数组 |
| tuple | ❌ | ✅ | ✅ | 固定结构,函数返回值 |
| dict | ✅ | ✅(3.7+) | 键❌ / 值✅ | 键值映射,快速查找 |
| set | ✅ | ❌ | ❌ | 去重,成员检测,集合运算 |
| str | ❌ | ✅ | ✅ | 文本处理 |
| frozenset | ❌ | ❌ | ❌ | 不可变集合,可用作键 |
listtupledictsetstrcollections.dequecollections.Counter掌握这些数据结构及其特性,是写出高效、清晰 Python 代码的基础。