Python 里常见数据结构的 CRUD(Create 创建、Read 读取、Update 更新、Delete 删除)方法确实容易混。下面整理一份 LeetCode 高频版速查表。
记忆重点:
- list:有序,可重复,可修改
- tuple:有序,不可修改
- dict:键值映射
- set:无序,去重
- str:不可修改的字符序列
1. List(列表)★★★★★ LeetCode 高频
python
nums = [1, 2, 3]
Create 创建
python
nums = []
nums = [1, 2, 3]
# 重复创建
nums = [0] * 5
# [0,0,0,0,0]
Read 查询
下标访问
python
nums[0]
# 1
负数索引
python
nums[-1]
# 3
切片
python
nums[1:3]
# [2,3]
遍历
python
for x in nums:
print(x)
Update 修改
修改元素
python
nums[0] = 10
# [10,2,3]
添加
尾部:
python
nums.append(4)
# [1,2,3,4]
指定位置:
python
nums.insert(1, 100)
# [1,100,2,3]
合并:
python
nums.extend([5,6])
# [1,2,3,5,6]
Delete 删除
删除指定值
python
nums.remove(2)
删除第一个 2
删除指定位置
python
nums.pop(1)
返回被删除元素
删除最后一个
python
nums.pop()
清空
python
nums.clear()
常用判断
python
2 in nums
len(nums)
2. String(字符串)★★★★★
字符串不可修改:
python
s = "hello"
Create
python
s = "abc"
Read
索引:
python
s[0]
# a
切片:
python
s[1:3]
# bc
长度:
python
len(s)
Update
不能:
python
s[0] = 'x'
# Error
只能创建新字符串:
python
s = "x" + s[1:]
常用:
替换:
python
s.replace("a","b")
拼接:
python
"".join(["a","b"])
Delete
不能删除字符。
只能:
python
s = s.replace("a","")
3. Dict(字典)★★★★★
LeetCode 高频:
- 哈希表
- 两数之和
- 滑动窗口
python
mp = {
"a":1
}
Create
创建:
python
mp = {}
添加:
python
mp["age"] = 18
Read
通过 key:
python
mp["age"]
安全读取:
python
mp.get("age")
遍历:
key:
python
for k in mp:
print(k)
key,value:
python
for k,v in mp.items():
print(k,v)
Update
修改:
python
mp["age"] = 20
批量:
python
mp.update({
"name":"Tom"
})
Delete
删除:
python
del mp["age"]
或者:
python
mp.pop("age")
清空:
python
mp.clear()
4. Set(集合)★★★★★
用途:
- 去重
- 判断存在
- 哈希集合
python
s = {1,2,3}
Create
python
s = set()
注意:
python
{}
不是 set!
这是 dict:
python
type({})
# dict
Read
判断:
python
2 in s
遍历:
python
for x in s:
print(x)
长度:
python
len(s)
Update
添加:
python
s.add(4)
批量:
python
s.update([5,6])
Delete
删除:
python
s.remove(2)
不存在会报错。
安全删除:
python
s.discard(10)
清空:
python
s.clear()
5. Tuple(元组)
不可修改:
python
t = (1,2,3)
Read
python
t[0]
len(t)
Update/Delete
都不支持:
python
t[0]=10
# Error
6. Stack(栈)★★★★★
Python 一般用 list 实现:
先进后出:
push
↓
[1,2,3]
pop
↓
3
Create
python
stack=[]
Add
入栈:
python
stack.append(x)
Read
栈顶:
python
stack[-1]
Delete
出栈:
python
stack.pop()
LeetCode:
- 括号匹配
- 单调栈
- DFS
7. Queue(队列)★★★★★
不要用 list!
推荐:
python
from collections import deque
q = deque()
Create
python
q = deque()
Add
入队:
python
q.append(x)
Read
队首:
python
q[0]
Delete
出队:
python
q.popleft()
LeetCode:
- BFS
- 层序遍历
8. Heap(堆)
Python:
python
import heapq
heap=[]
默认小根堆。
Create
python
heap=[]
Add
python
heapq.heappush(heap,x)
Read 最小值
python
heap[0]
Delete
弹出最小:
python
heapq.heappop(heap)
LeetCode:
- Top K
- 优先队列
总表
| 数据结构 | 增加 | 查询 | 修改 | 删除 |
|---|---|---|---|---|
| list | append / insert | \[\] / slice | numsi= | pop/remove |
| str | + | \[\] | replace | replace |
| dict | dictkey= | get / \[\] | dictkey= | pop/del |
| set | add/update | in | - | remove/discard |
| tuple | ❌ | \[\] | ❌ | ❌ |
| stack | append | -1 | - | pop |
| queue | append | 0 | - | popleft |
| heap | heappush | heap0 | - | heappop |
LeetCode 里最重要的优先级
如果目标是刷算法:
1. list ⭐⭐⭐⭐⭐
2. dict ⭐⭐⭐⭐⭐
3. set ⭐⭐⭐⭐⭐
4. deque ⭐⭐⭐⭐
5. heap ⭐⭐⭐⭐
6. string ⭐⭐⭐⭐
7. tuple ⭐⭐