小编给大家分享一下Python的双向队列是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
成都创新互联公司专注于克山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供克山营销型网站建设,克山网站制作、克山网页设计、克山网站官网定制、微信平台小程序开发服务,打造克山网络公司原创品牌,更为您提供克山网站排名全网营销落地服务。
虽然可以使用 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)复制代码
双向队列也不是完美的,如果从队列中间位置删除元素就比较慢,因为它只针对队列的头尾操作做了优化。
以上是Python的双向队列是什么的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!