首页后端开发PythonPython双向队列是什么意思,基本用法你了解吗?

Python双向队列是什么意思,基本用法你了解吗?

时间2024-03-23 03:06:03发布访客分类Python浏览1341
导读:这篇文章给大家分享的是Python双向队列的相关内容。主要介绍了Python双向队列的基本用法,对双向队列不了解的朋友可以参考看看,文中的示例代码介绍得很详细,有一定的参考价值,接下来就跟随小编一起学习一下吧。虽然可以使用 Python 列...

这篇文章给大家分享的是Python双向队列的相关内容。主要介绍了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)复制代码
  1. maxlen 是 deque 的可选参数,用于指定队列容量,即可以放多少个元素。
  2. rotate() 方法可以旋转队列。它有一个入参 n ,当 n > 0时,队列从最右边开始的 n 个元素会被移动到左边。当 n 0时,队列从最左边开始的 n 个元素会被移动到右边。
  3. extend() 方法可以为队列添加新元素,它接受一个列表作为入参,会把列表中的所有元素添加到队列中。新的元素放置在队列右边。
  4. 如果在添加新元素时发现队列已满,这时就会自动删除队首的元素。
  5. extendleft(iter) 方法是把新增的元素放置在队列左边。其它特性与 extend() 方法相同。

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

现在大家对于Python双向队列这些应该都有所了解了,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Python双向队列的内容,大家可以关注网络其它相关文章。

文本转载自PHP中文网

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Python双向队列是什么意思,基本用法你了解吗?
本文地址: https://pptw.com/jishu/651058.html
Nodejs和PHP的定义是什么,有哪一些区别 PHP中array()函数的操作对象是什么

游客 回复需填写必要信息