python数据结构
常用数据结构
字符串
s = "hello python" # 基础操作 print(s[0]) # 索引 print(s[1:5]) # 切片 print(len(s)) # 长度 print(s.strip()) # 去空格 print(s.split(" ")) # 分割 print(s.upper()) # 大写 print(s.lower()) # 小写 # 遍历 for char in s: print("字符:", char)元组tuple
t = (1, 2, 3, "a", "b") # 基础操作 print(t[0]) print(t.count(2)) print(t.index("a")) print(len(t)) # 拆包 a, b, c = (1, 2, 3) # 遍历 for item in t: print("元组元素:", item)列表list
lst = [10, 20, 30, 40] # 增删改查 lst.append(50) lst.pop() lst[1] = 15 lst.insert(0, 0) # 排序 lst.sort() # 遍历 for num in lst: print("列表元素:", num) # 带下标遍历 for idx, num in enumerate(lst): print(idx, num)栈
stack = [1, 2, 3] # 入栈、出栈 stack.append(4) stack.pop() stack[-1] len(stack) # 遍历 for val in stack: print("栈元素:", val)队列
from collections import deque q = deque([1, 2, 3]) # 用list初始化 # 入队、出队 q.append(4) q.popleft() q[0] len(q) # 遍历 for val in q: print("队列元素:", val)双向队列
from collections import deque dq = deque([1, 2, 3]) # 两端操作 dq.append(4) # 右侧入队 dq.appendleft(0) # 左侧入队 dq.pop() # 右侧出队 dq.popleft() # 左侧出队 len(dq) # 遍历 for val in dq: print("双向队列元素:", val)优先队列
import heapq pq = [] # 入堆 heapq.heappush(pq, 3) heapq.heappush(pq, 1) heapq.heappush(pq, 2) # 出堆 heapq.heappop(pq) # 遍历(堆结构遍历,不保证有序) for val in pq: print("优先队列内部元素:", val) # 已有列表初始化最小堆 nums = [5, 2, 8, 1, 3, 7, 4] pq = heapq.heapify(nums) # 堆顶 print(nums[0]) # 从小到大的顺序 sorted_nums = [] while nums: sorted_nums .append(heapq.heappop(nums)) # 实际应用:找前 K 个最小的元素 nums = [9, 3, 7, 1, 5, 8, 2, 6, 4] # 返回最小的 K 个元素 ns = heapq.nsmallest(3, nums) # 返回最大的 K 个元素 nl = heapq.nlargest(3, nums)字典
d = {"name": "小明", "age": 18, "city": "北京"} # 增删改查 d["gender"] = "男" d["age"] = 20 del d["city"] d["city"] len(d) print("name" in d) # 遍历键 for k in d.keys(): print("键:", k) # 遍历值 for v in d.values(): print("值:", v) # 遍历键值对 for k, v in d.items(): print(k, ":", v) # 频率统计 text = "hello world" freq = {} for ch in text: # 如果 ch 不在字典中,get 返回 0,加 1 后就是 1 freq[ch] = freq.get(ch, 0) + 1集合
# 直接创建 s = {1, 2, 3, 4} # 列表创建(自动去重) nums = [1, 2, 2, 3, 3, 3] sl = set(nums) # 增删 s.add(5) s.discard(2) s.remove(2) # 不存在会报错 # 集合运算 a = {1,2,3} b = {3,4,5} print(a & b) # 交集 print(a | b) # 并集 print(a - b) # 差集 # 遍历 for val in s: print("集合元素:", val)| 数据结构 | 符号 / 实现 | 可变性 | 核心操作 | 遍历方式 |
|---|---|---|---|---|
| 字符串 | ""str | 不可变 | 索引、切片、split、strip、replace | for c in s |
| 元组 | ()tuple | 不可变 | 索引、count、index | for item in t |
| 列表 | []list | 可变 | append、pop、insert、sort、reverse | for item in lst |
| 栈 | list | 可变 | append、pop | for val in stack |
| 队列 | deque | 可变 | append、popleft | for val in q |
| 双向队列 | deque | 可变 | append、appendleft、pop、popleft | for val in dq |
| 优先队列 | heapq | 可变 | heappush、heappop | for val in pq |
| 字典 | {}dict | 可变 | [key]、get、keys、items、in | for k,v in d.items() |
| 集合 | {}set | 可变 | add、discard、remove、交并差、in | for val in s |