您的位置:

Python中deque的用法

一、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中非常实用的数据结构之一。