下面就详细讲解一下Python的collections模块中的deque双端队列结构。
1. 简介
首先来介绍一下deque,它是Python的collections模块提供的一个双端队列结构。deque支持从两端快速的append和pop操作,时间复杂度都是O(1),因此比传统的list在很多场景下都要更为高效。deque还提供了一些其他基础队列操作,如长度大小,双端队列的旋转等。
2. 使用
2.1 创建deque
下面代码展示如何创建一个deque。
from collections import deque
# 创建一个空的deque
d = deque()
# 在deque左边添加元素
d.appendleft(2)
d.appendleft(1)
# 在deque右边添加一个元素
d.append(3)
print(d) # 输出: deque([1, 2, 3])
2.2 添加和删除元素
deque可以从两端添加和删除元素,可以使用append、appendleft、pop、popleft等方法来操作。
from collections import deque
d = deque([1,2,3])
# 在左端添加元素
d.appendleft(0)
# 在右端添加元素
d.append(4)
# 从左端删除元素
d.popleft()
# 从右端删除元素
d.pop()
print(d) # 输出: deque([1, 2, 3])
2.3 deque转换成list
deque可以通过list方法转换成普通的list。
from collections import deque
d = deque([1,2,3])
# 将deque转换成list
l = list(d)
print(l) # 输出: [1, 2, 3]
2.4 队列旋转
deque提供了一个方法叫rotate,可以把队列右移和左移。(右移的话,右侧元素会被移动到左侧,左侧元素移到右侧,但并不改变队列的相对顺序)
from collections import deque
d = deque([1,2,3,4,5])
# 右移两个位置
d.rotate(2)
print(d) # 输出: deque([4, 5, 1, 2, 3])
下面是一个左移的例子。
from collections import deque
d = deque([1,2,3,4,5])
# 左移一个位置
d.rotate(-1)
print(d) # 输出: deque([2, 3, 4, 5, 1])
3. 总结
以上就是关于Python collections模块中的deque双端队列结构的详细介绍。deque大大增加了Python队列的灵活性,可以快速的进行队列的操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python的collections模块中的deque双端队列结构 - Python技术站