python 中的双向队列deque

python 中的双向队列deque

class collections.deque([iterable[, maxlen]])
deque是一个线程安全,可以快速在两端操作的数据类型。
如果maxlen没有指定,那么deque可以无限增长;反之,deque满了之后,再有新的元素加入时,就会从另一端删除旧元素。

常用函数

函数说明
append(x)
appnedleft(x)
clear()
copy()浅拷贝
extend(iterable)
extendleft
insert(index,value)如果插入会导致一个限长 deque 超出长度 maxlen 的话,就引发一个 IndexError。
pop()返回并删除队头
popleft()
remove(value)移除找到的第一个 value。 如果没有的话就引发 ValueError。
revere()
rotate(n)如果n>0,向右循环移动n步,如果n<0,向左循环移动n步。原地操作
count(value)value的个数
index(value)若value不存在,会引起ValueError

代码示例

In [1]: from collections import deque

In [2]: s=deque(range(5),10)

In [3]: s
Out[3]: deque([0, 1, 2, 3, 4])
#extend后元素数目超过maxlen,因此删除左侧元素
In [5]: s.extend(range(5,11))

In [6]: s
Out[6]: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

In [7]: s.rotate(5)

In [8]: s
Out[8]: deque([6, 7, 8, 9, 10, 1, 2, 3, 4, 5])

In [9]: s.index(22)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-ead4934e3f4c> in <module>
----> 1 s.index(22)

ValueError: 22 is not in deque

参考:

  1. 流畅的python
  2. deque 文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值