一、deque简介
deque(全名double-ended queue)是一个可以在两端添加或删除元素的数据结构,可以让添加和删除操作的时间复杂度达到 O(1)。deque 可以视为队列(queue)和栈(stack)的结合体。
Python中提供了deque这个类,它可以用来创建一个deque数据结构,deque类可以高效地在两端进行添加或删除元素的操作,因此deque可以被广泛应用在数据的存储、缓存等方面。
from collections import deque
d = deque([3, 5, 1, 2, 6])
print(d)
以上代码中,我们通过collections模块的deque类来创建了一个deque实例d,并将其初始化为包含一些数字的列表。我们可以调用print函数输出该deque实例d:
deque([3, 5, 1, 2, 6])
二、deque的基本操作
1. 在两端添加元素
deque提供了两个方法来在两端添加元素:
- append(x):在右端添加一个元素x;
- appendleft(x):在左端添加一个元素x。
from collections import deque
d = deque([3, 5, 1, 2, 6])
d.append(4) # 在右端添加元素4
d.appendleft(8) # 在左端添加元素8
print(d)
以上代码中,我们先在deque实例d的右端添加了元素4,然后在左端添加了元素8。我们可以调用print函数输出修改后的deque实例d:
deque([8, 3, 5, 1, 2, 6, 4])
2. 在两端删除元素
deque提供了两个方法来在两端删除元素:
- pop():在右端删除一个元素;
- popleft():在左端删除一个元素。
from collections import deque
d = deque([3, 5, 1, 2, 6])
d.pop() # 在右端删除一个元素
d.popleft() # 在左端删除一个元素
print(d)
以上代码中,我们先在deque实例d的右端删除了一个元素,再在左端删除了一个元素。我们可以调用print函数输出修改后的deque实例d:
deque([5, 1, 2])
三、deque的高级操作
1. deque的长度
可以使用len()函数获取deque的长度:
from collections import deque
d = deque([3, 5, 1, 2, 6])
print(len(d)) # 输出deque的长度
以上代码中,我们使用len()函数获取了deque实例d的长度,并将其输出。运行结果如下:
5
2. deque的迭代
可以使用for循环对deque进行依次迭代:
from collections import deque
d = deque([3, 5, 1, 2, 6])
for i in d:
print(i)
以上代码中,我们使用for循环对deque实例d进行迭代,并对每个元素进行输出。运行结果如下:
3
5
1
2
6
3. deque的切片
deque具有切片的功能,可以使用切片来获取deque序列的一部分:
from collections import deque
d = deque([3, 5, 1, 2, 6])
print(d[1:4]) # 对deque进行切片操作
以上代码中,我们使用切片从deque实例d的索引1到索引4(不包含索引4)获取了一部分元素,并将结果输出。运行结果如下:
deque([5, 1, 2])
4. deque的反转
可以使用reverse()方法对deque进行反转,将左端变成右端,右端变成左端:
from collections import deque
d = deque([3, 5, 1, 2, 6])
d.reverse() # 反转deque
print(d)
以上代码中,我们使用reverse()方法对deque实例d进行反转,并将结果输出。运行结果如下:
deque([6, 2, 1, 5, 3])
四、总结
deque的高效性体现在它的操作都是 O(1) 的时间复杂度,实现起来很简单,容易上手。在数据存储、缓存等领域,deque都可以被广泛应用,是Python中非常实用的数据结构之一。