保留有限

deque 是一个双端队列,如果经常从两端加入或者删除元素,选择这个数据结构就比较好,在队列两端插入或者删除元素时间复杂度都是O(1),区别与列表,在列表的开头插入或者删除元素的时间复杂度是O(n)。
使用deque(maxlen = N)构造函数会新建一个固定大小的队列。当有新元素加入队列并且这个队列已满时,最老的元素(最先加入的元素)会自动被除掉:

>>> from collections import deque
>>> q = deque(maxlen = 3)
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3], maxlen=3)
>>> q.append(4)
>>> q
deque([2, 3, 4], maxlen=3)

deque类可以被用在任何我们只需要一个简单队列数据结构的场合,如果不设置队列的大小,就会得到一个无限大小的队列,可以在两端任意的添加或弹出元素:

>>> q = deque()
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3])
>>> q.append(4)
>>> q
deque([1, 2, 3, 4])

当然也可以任意删除

>>> q.pop()
4
>>> q
deque([1, 2, 3])
>>> q.popleft()
1

可以看出,入队列时:默认从右边进入
出队列时:默认从右边出队列

可以用rotate(value)对队列进行旋转操作(每个元素依次向后移动value步,最后一个元素移动到第一个位置算一步),默认为移动一步

>>> q
deque([1, 2, 3])
>>> q.popleft()
1
>>> q.append(1)
>>> q
deque([2, 3, 1])
>>> q.rotate()
>>> q
deque([1, 2, 3])
>>> q.rotate(2)
>>> q
deque([2, 3, 1])

可以直接给队列加入一个列表(默认从右边加入):

>>> q.extend(['a','b','c'])
>>> q
deque([2, 3, 1, 'a', 'b', 'c'])

注意的是可以一次加入一个列表,但是不能够一次出来一个列表,只能一个一个的出队,如果想要一次出来多个元素,需要借助循环来实现。
还有一些insert,reverse,remove等基本操作大家可以类比列表的操作都试一试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值