python deque function=`append`、`appendleft`、`pop`、`popleft`、`extend`、`extendleft`、`insert`、`rotate`

部署运行你感兴趣的模型镜像

一、什么是 deque(双端队列)?

  • deque(double-ended queue)是 Python collections 模块提供的高效双端队列数据结构。
  • 支持在队列两端 O(1) 时间复杂度的插入和删除,比列表(list)在头部插入/删除快得多。
  • 适合实现队列、栈、滑动窗口等需要频繁头尾操作的场景。

二、deque 的常用方法

方法作用描述示例
append(x)尾部添加元素 xd.append(10)
appendleft(x)头部添加元素 xd.appendleft(20)
pop()尾部弹出并返回一个元素d.pop()
popleft()头部弹出并返回一个元素d.popleft()
extend(iter)尾部添加多个元素(可迭代对象)d.extend([4, 5, 6])
extendleft(iter)头部添加多个元素(可迭代对象,逆序)d.extendleft([7, 8])
insert(i, x)在指定索引 i 处插入元素 xd.insert(2, ‘a’)
rotate(n)将队列旋转 n 步(正数右移,负数左移)d.rotate(1)

你写的 append left 应为 appendleftpop left 应为 popleftextend left 应为 extendleft


三、方法用法举例

from collections import deque

deque1 = deque(['hello', 'world', 1, 2, 3])

deque1.append(4)           # ['hello', 'world', 1, 2, 3, 4]
deque1.appendleft(0)       # [0, 'hello', 'world', 1, 2, 3, 4]
deque1.pop()               # 弹出4,结果[0, 'hello', 'world', 1, 2, 3]
deque1.popleft()           # 弹出0,结果['hello', 'world', 1, 2, 3]
deque1.extend([5, 6])      # ['hello', 'world', 1, 2, 3, 5, 6]
deque1.extendleft([-1, -2])# [-2, -1, 'hello', 'world', 1, 2, 3, 5, 6](注意顺序反转)
deque1.insert(2, 'python') # ['-2', '-1', 'python', 'hello', ...]
deque1.rotate(2)           # 队列右移2步,尾部元素移到头部

四、deque 的优势和应用场景

  • 高效的头尾操作:比 list 在头部插入/删除快得多。
  • 适合实现
    • 队列(FIFO):用 appendpopleft
    • 栈(LIFO):用 appendpop
    • 滑动窗口算法
    • 最近使用缓存(LRU Cache)

五、注意事项

  • deque 支持所有 list 的常用操作,但不支持切片(如 d[1:3])。
  • extendleft逆序插入元素。
  • 可以指定最大长度 deque(iterable, maxlen=N),超出时自动丢弃头部/尾部元素。

六、示例代码

from collections import deque

d = deque([1, 2, 3])
d.append(4)         # [1, 2, 3, 4]
d.appendleft(0)     # [0, 1, 2, 3, 4]
print(d.pop())      # 4
print(d.popleft())  # 0
d.extend([5, 6])    # [1, 2, 3, 5, 6]
d.extendleft([-1, -2]) # [-2, -1, 1, 2, 3, 5, 6]
d.insert(2, 'a')    # [-2, -1, 'a', 1, 2, 3, 5, 6]
d.rotate(3)         # [3, 5, 6, -2, -1, 'a', 1, 2]
print(d)

七、总结

  • deque 是高效的双端队列,支持头尾 O(1) 插入/删除。
  • 常用方法有:appendappendleftpoppopleftextendextendleftinsertrotate
  • 适合队列、栈、滑动窗口等场景,是 list 的强力补充。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贵哥的编程之路(热爱分享 为后来者)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值