Python的双向队列是什么-创新互联

小编给大家分享一下Python的双向队列是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

成都创新互联长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为常山企业提供专业的成都做网站、成都网站设计,常山网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

虽然可以使用 Python 列表的 .append 和 .pop 方法模拟栈或者队列,但删除列表的第一个元素或者在第一个元素之前添加一个新元素,都非常耗时。因为需要把列表中的所有元素向后移动。

Python 的双向队列使用 collections.deque 类来实现。它是一个线程安全且可以快速从两端添加或者删除元素的类。

deque  /dɛk/

也可以利用 collections.deque 类来实现缓存。首先先指定缓存队列的大小,然后从队首删除过期元素和在队尾添加新元素。

Luciano Ramalho 举了一个示例来说明双向队列的基本用法。

from collections import deque

dq = deque(range(10), maxlen=10)
logging.info('dq -> %s', dq)

dq.rotate(3)
logging.info('dq -> %s', dq)

dq.rotate(-4)
logging.info('dq -> %s', dq)

dq.extend([11, 22, 33])
logging.info('dq -> %s', dq)

dq.extendleft([10, 20, 30, 40])
logging.info('dq -> %s', dq)复制代码

运行结果:

INFO - dq -> deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
INFO - dq -> deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6], maxlen=10)
INFO - dq -> deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], maxlen=10)
INFO - dq -> deque([4, 5, 6, 7, 8, 9, 0, 11, 22, 33], maxlen=10)
INFO - dq -> deque([40, 30, 20, 10, 4, 5, 6, 7, 8, 9], maxlen=10)复制代码
  1. maxlen 是 deque 的可选参数,用于指定队列容量,即可以放多少个元素。
  2. rotate() 方法可以旋转队列。它有一个入参 n ,当 n >0时,队列从最右边开始的 n 个元素会被移动到左边。当 n <0时,队列从最左边开始的 n 个元素会被移动到右边。
  3. extend() 方法可以为队列添加新元素,它接受一个列表作为入参,会把列表中的所有元素添加到队列中。新的元素放置在队列右边。
  4. 如果在添加新元素时发现队列已满,这时就会自动删除队首的元素。
  5. extendleft(iter) 方法是把新增的元素放置在队列左边。其它特性与 extend() 方法相同。

双向队列也不是完美的,如果从队列中间位置删除元素就比较慢,因为它只针对队列的头尾操作做了优化。

以上是Python的双向队列是什么的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联-成都网站建设公司行业资讯频道!

网站名称:Python的双向队列是什么-创新互联
文章转载:https://www.cdcxhl.com/article6/dcdsig.html

成都网站建设公司_创新互联,为您提供网站收录移动网站建设搜索引擎优化关键词优化网页设计公司Google

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作