deque和list的区别

1345. 跳跃游戏 IV笔记(1)

deque和list是非常类似的,具体函数如下

只要list里有的方法,deque 都可以用. 我列出如下 :
1 list.append(obj)
在列表末尾添加新的对象
2 list. count (obj)
统计某个元素在列表中出现的次数
3 list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj)
将对象插入列表
6 list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj)
移除列表中某个值的第一个匹配项
8 list.reverse()
反向列表中元素
9 list.sort(cmp=None, key=None, reverse=False)
对原列表进行排序

但是deque 的方法list是不能用的例如:
appendleft(x) 头部添加元素
extendleft(iterable) 头部添加多个元素
popleft() 头部返回并删除
rotate(n=1) 旋转
maxlen 最大空间,如果是无边界的,返回None
————————————————
版权声明:本文为CSDN博主「上海_彭彭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34979346/article/details/83540389

可以看出list和deque功能上是类似的,list.pop(0)和deque.popleft()都可以实现左侧的删除,但是在时间上有非常大的差别。

具体原理参考上面引用文章的评论,list是动态的,deque是静态的,deque栈底永远不会变,deque的popleft只是把下一个元素变成栈底,pop的元素还在那里,但是list是栈底弹出,其他全部前移。

在BFS的实现中,需要大量的popleft,所以用deque可以节约大量的时间。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值