欢迎访问宙启技术站
智能推送

Python中collections.deque的用法及示例

发布时间:2023-12-15 16:55:57

在Python的collections模块中,提供了一个双端队列类deque。deque是一种具有队列和栈的操作特性的数据结构,可以从两端进行数据的插入和删除操作。deque类提供了高效的线程安全的双端操作,适用于需要高效地在两端插入和删除元素的场景。

使用deque类需要先导入collections模块,然后创建一个deque对象。deque对象的初始化参数可以是一个可迭代对象,如列表、元组等,也可以为空。下面是一个使用空参数初始化的deque对象的例子:

from collections import deque

d = deque()

接下来,我们可以使用deque对象的方法来执行相关操作。

1. append(element):在尾部插入元素。示例:

d.append(1)
d.append(2)
d.append(3)

2. appendleft(element):在头部插入元素。示例:

d.appendleft(0)

3. pop():删除并返回尾部的元素。示例:

x = d.pop()
print(x)  # 输出3

4. popleft():删除并返回头部的元素。示例:

x = d.popleft()
print(x)  # 输出0

5. extend(iterable):在尾部扩展一个可迭代对象。示例:

d.extend([4, 5, 6])

6. extendleft(iterable):在头部扩展一个可迭代对象。示例:

d.extendleft([-1, -2, -3])

注意扩展的元素的顺序和可迭代对象的顺序是相反的。

7. remove(element):删除指定的元素。示例:

d.remove(2)

8. rotate(n):将队列向右循环移动n步,n可以是负数。示例:

d.rotate(1)

以上就是deque类的常用方法,下面是一个完整的示例:

from collections import deque

d = deque()

d.append(1)
d.append(2)
d.append(3)
d.appendleft(0)

x = d.pop()
print(x)  # 输出3

x = d.popleft()
print(x)  # 输出0

d.extend([4, 5, 6])
d.extendleft([-1, -2, -3])

d.remove(2)

d.rotate(1)

print(d)  # 输出deque([-3, -2, -1, 1, 4, 5, 6])

通过使用deque类,我们可以方便地进行高效的双端操作,并且还可以有效地在队列的两端插入和删除元素。这对于需要频繁进行插入和删除操作的情况下,可以提高程序的性能。