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      ⭐⭐
相关推荐
特立独行的猫A19 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了1 天前
03 函数定义和调用
开发语言·python
承渊政道1 天前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛1 天前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
imgsq1 天前
GESP Python 一到四级:备考路线与真题特点
python·青少年编程
eggwyw1 天前
Anaconda安装卸载的详细流程指南
开发语言·python
2601_967979121 天前
纯手写:Python安装pip完整教程,搞了几小时,终于成功
python·教程·pip·安装·包管理
Norna1 天前
缓存文件从没写出来:一个 .json 被当成目录用了
python
aifannihao1 天前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线
yuyuxun11 天前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计