deque
时间: 2025-04-21 16:36:55 浏览: 33
### Python 中的双端队列 (Deque)
#### Deque 的定义
`deque` 是 `collections` 模块提供的一种线性数据结构,支持两端高效插入和删除操作。相比于列表,在两端执行这些操作时性能更优[^4]。
#### 创建与初始化
可以使用如下方式创建一个空的 `deque` 或者带有初始元素的 `deque`:
```python
from collections import deque
# 创建一个空的 deque
d_empty = deque()
# 带有初始元素的 deque
initial_elements = ['a', 'b', 'c']
d_with_initials = deque(initial_elements)
print(d_with_initials) # 输出: deque(['a', 'b', 'c'])
```
#### 添加元素
可以在任意一端添加新元素,这不会影响另一端已有的元素排列顺序。
```python
# 向右端添加单个元素
d_with_initials.append('d')
print(d_with_initials) # 输出: deque(['a', 'b', 'c', 'd'])
# 向左端添加单个元素
d_with_initials.appendleft('z')
print(d_with_initials) # 输出: deque(['z', 'a', 'b', 'c', 'd'])
# 扩展右侧多个元素
d_with_initials.extend(['e', 'f'])
print(d_with_initials) # 输出: deque(['z', 'a', 'b', 'c', 'd', 'e', 'f'])
# 扩展左侧多个元素
d_with_initials.extendleft(['y', 'x'])
print(d_with_initials) # 输出: deque(['x', 'y', 'z', 'a', 'b', 'c', 'd', 'e', 'f'])
```
#### 移除元素
同样可以从任一侧移除最外层的一个或几个元素。
```python
# 删除并返回右边第一个元素
right_first_element = d_with_initials.pop()
print(f"Popped from right {right_first_element}")
# 删除并返回左边第一个元素
left_first_element = d_with_initials.popleft()
print(f"Popped from left {left_first_element}")
```
#### 获取长度和其他常用属性
获取当前 `deque` 容量大小以及最大限定容量(如果设置的话)
```python
current_length = len(d_with_initials)
max_size = getattr(d_with_initials, 'maxlen', None)
print(f"Current length is {current_length}, Max size limit is {max_size}.")
```
#### 双向迭代器
允许正序遍历和逆序遍历整个容器内的所有成员。
```python
for item in reversed(d_with_initials):
print(item, end=' ')
for item in iter(d_with_initials):
print(item, end=' ')
```
阅读全文
相关推荐



















