Python的双向队列是什么

  介绍

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

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

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

双端队列,/d ?k/

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

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

从进口双端队列集合      dq=双端队列(范围(10),maxlen=10)   logging.info (& # 39; dq→% & # 39;dq)      dq.rotate (3)   logging.info (& # 39; dq→% & # 39;dq)      dq.rotate (4)   logging.info (& # 39; dq→% & # 39;dq)      dq。扩展([33]11日22日)   logging.info (& # 39; dq→% & # 39;dq)      dq。extendleft([10年,20年,30、40])   logging.info (& # 39; dq→% & # 39;dq)复制代码

运行结果:

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

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

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

Python的双向队列是什么