本文摘自php中文网,作者coldplay.xixi,侵删。
Python教程今天介绍双向队列。
虽然可以使用 Python 列表的 .append 和 .pop 方法模拟栈或者队列,但删除列表的第一个元素或者在第一个元素之前添加一个新元素,都非常耗时。因为需要把列表中的所有元素向后移动。
Python 的双向队列使用 collections.deque 类来实现。它是一个线程安全且可以快速从两端添加或者删除元素的类。
deque /d?k/
也可以利用 collections.deque 类来实现缓存。首先先指定缓存队列的大小,然后从队首删除过期元素和在队尾添加新元素。
Luciano Ramalho 举了一个示例来说明双向队列的基本用法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
运行结果:
1 2 3 4 5 |
|
- maxlen 是 deque 的可选参数,用于指定队列容量,即可以放多少个元素。
- rotate() 方法可以旋转队列。它有一个入参 n ,当 n >0时,队列从最右边开始的 n 个元素会被移动到左边。当 n <0时,队列从最左边开始的 n 个元素会被移动到右边。
- extend() 方法可以为队列添加新元素,它接受一个列表作为入参,会把列表中的所有元素添加到队列中。新的元素放置在队列右边。
- 如果在添加新元素时发现队列已满,这时就会自动删除队首的元素。
- extendleft(iter) 方法是把新增的元素放置在队列左边。其它特性与 extend() 方法相同。
双向队列也不是完美的,如果从队列中间位置删除元素就比较慢,因为它只针对队列的头尾操作做了优化。
相关免费学习推荐:python教程(视频)
以上就是聊聊 Python 的双向队列的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。