Python常见数据结构的CRUD(LeetCode高频版速查)

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      ⭐⭐
相关推荐
钱栈up42 分钟前
Mac 开发机一键发版不用切环境:我这样改造了团队的后端部署脚本Maven编译卡住20分钟?我靠两步定位到2处隐蔽编译错误
开发语言·python·macos
CSND7401 小时前
DeepSeek Harness实测+入门教程
人工智能·python
gb42152871 小时前
ai中agent,skill Package,skill,tool,prompt,mcp等等概念的关系
python
圣保罗的大教堂1 小时前
leetcode 3622. 判断整除性 简单
leetcode
淼澄研学1 小时前
Python实战:基于LangChain与Chroma构建企业级RAG知识库问答系统
开发语言·python·langchain
辰辉创聚1 小时前
In Vivo抗体是什么?| 体内抗体与普通科研抗体的区别
人工智能·python·时序数据库·in vivo抗体·体内抗体·体内级抗体
深圳市宝华视联1 小时前
Python 读取 IP 视频流简单 Demo
python·嵌入式硬件·opencv·网络协议·tcp/ip·实时音视频·嵌入式实时数据库
_Narcissus_2 小时前
链表算法题和静态链表
数据结构·c++·笔记·算法·链表·ai·力扣
门思科技2 小时前
LoRaWAN Regional Parameters:为什么 CN470 和 EU868 的频点数不同
python·物联网