Python的collections库之deque

本文深入讲解Python collections模块下的deque()函数,探讨其高效性及在BFS算法中的应用。deque()支持线程安全,两端操作复杂度为O(1),并提供append、appendleft、extend、extendleft、pop、popleft等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python的collections库之deque()

我在上一篇文章BFS里使用了Python的collections.deque(),今天我来具体介绍一下这个队列,以及为什么使用它更好。

首先,collections模块提供了Python标准内建容器 dict、list、set、tuple 的替代选择。此模块相较于传统Python的容器,都有一定优点。今天我先来介绍其中的队列----deque

collections.deque()队列支持线程安全,对于从两端添加(append)或者弹出(pop),复杂度O(1)。这也是我们为什么在BFS的时候使用它。

1.collections.deque()的创建
它的创建很简单:

import collections
a = collections.deque()

当然,它还给你提供了创建时限制队列长度的选项 maxlen :

import collections
b = collections.deque(maxlen=2)  # 限制队列长度为2

当插入新数据时,队列容量已满,此时有两种情况:若选择左边插入,弹出最右边的元素;若选择右边插入,弹出最左边的元素。

2.append和appendleft
这两个都为deque的插入函数,其中,append和传统队列一样,从右边插入新数据;而appendleft则是从左边插入。

import collections
a = collections.deque()
a.append(4)
a.appendleft(1)

在这里插入图片描述

3.extend和extendleft
这两个函数与之前的append和appendleft类似,不过这个是插入一整个iterable (迭代对象) 。

import collections
b = collections.deque() 

b.extend([1, 2, 3])  # 右边插入
b.extend('HI')  # 也可以插入字符串
b.extendleft('hi')  # 左边插入

在这里插入图片描述

4.pop和popleft
这两个函数为弹出函数,分别用于弹出队列的最右边和最左边的元素。

import collections
a = collections.deque()
a.pop()  # 最右边元素
a.popleft()  # 最左边元素

在这里插入图片描述

至于队列collections.deque()其它函数:remove(),copy(),reverse(),count(),insert(),index()。这些函数的用法与Python一般队列的用法一致,在此不再讲述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值