deque的用法
时间: 2025-04-21 14:39:57 浏览: 21
### Python `deque` 数据结构及其使用
#### 定义与特性
`deque` 是双端队列 (double-ended queue) 的缩写,在 Python 中由模块 `collections` 提供。这种数据结构支持线程安全、内存高效地从两端添加或弹出元素[^2]。
#### 初始化方式
可以通过单个可迭代对象来初始化 `deque` 实例,如下所示:
```python
from collections import deque
iterable = "123"
q = deque(iterable)
print(q) # 输出: deque(['1', '2', '3'])
```
这段代码展示了如何利用字符串作为参数创建一个新的 `deque` 对象,并打印其内容。
#### 基本操作
除了基本的构造函数外,`deque` 还提供了多种方法用于处理存储在其内部的数据项。下面是一些常用的方法说明以及相应的例子:
- **append(x)** 和 **appendleft(x):** 向右侧/左侧追加新条目;
- **pop()** 及 **popleft():** 移除并返回最右边/左边的一个项目;如果尝试从未填充的状态下移除,则会引发异常;
- **extend(iterable)** 或者 **extendleft(iterable):** 将给定序列中的所有成员依次加入到右方/左方;
- **rotate(n=1):** 循环移动 n 步,默认情况下向右旋转一位;当传递负数时则表示往相反方向转动相同数量的位置。
以下是这些功能的具体应用实例:
```python
d = deque([1, 2, 3])
d.append(4) # 添加至末端 -> deque([1, 2, 3, 4])
d.appendleft(-1) # 插入开头处 -> deque([-1, 1, 2, 3, 4])
item_right = d.pop() # 获取最后一个元素 -> item_right == 4; 结果变为 deque([-1, 1, 2, 3])
item_left = d.popleft() # 抽取第一个位置上的值 -> item_left == -1; 结果变成 deque([1, 2, 3])
new_items = ['a', 'b']
d.extend(new_items) # 扩展列表 -> deque([1, 2, 3, 'a', 'b'])
# 左侧扩展将会反转输入顺序再插入
d.extendleft('xy') # 新增字符 y x 到前面 -> deque(['y', 'x', 1, 2, 3, 'a', 'b'])
# 调整排列次序
d.rotate(2) # 整体顺时针转两次 -> deque(['a', 'b', 'y', 'x', 1, 2, 3])
d.rotate(-1) # 逆时针回滚一次 -> deque(['b', 'y', 'x', 1, 2, 3, 'a'])
```
通过上述介绍可以看出,`deque` 不仅易于理解和上手,而且非常适合用来实现栈(stack)和队列(queue),特别是在需要频繁执行快速插入删除动作的应用场景里表现尤为出色。
阅读全文
相关推荐


















