2025年python deque函数(python中deque())

python deque函数(python中deque())Python 中的标准库 collections 中有一个 deque 该对象与 list 列表相似 这里的 双向 指的是 deuqe 的结构使用双向链表 它提供了两端都可以操作的序列 这意味着 我们可以在序列前后都执行添加或删除 大多操作与 List 相同 如访问元素 求序列长度等 同样 deque 序列中的元素类型也不唯一 seq 可迭代对象 如列表 字符串 range 函数等 maxlen

大家好,我是讯享网,很高兴认识大家。



Python中的标准库collections中有一个deque,该对象与list列表相似。这里的“双向”指的是deuqe的结构使用双向链表,它提供了两端都可以操作的序列,这意味着,我们可以在序列前后都执行添加或删除。大多操作与List相同,如访问元素,求序列长度等,同样deque序列中的元素类型也不唯一。

  • seq -- 可迭代对象,如列表、字符串、 range() 函数等。
  • maxlen -- deque的限制长度
    两个参数都为可选参数。通常不设定maxlen,但注意当限制长度的deque增加超过限制数的元素时, 另一边的元素会自动删除,详见下文增加元素的操作。
    返回一个deque序列。
 

讯享网

结果为:

讯享网

 

讯享网
 

结果为:

讯享网

  • loc -- 插入元素的位置
  • elem -- 插入的元素,可为任意类型的元素
 

讯享网
 

讯享网


讯享网

  • seq -- 可迭代对象
 

结果为:

讯享网

  • seq -- 可迭代对象
 

结果为:

讯享网

【deque是线程安全的,也就是说可以同时从deque集合的左边和右边进行操作而不会有影响】

 

  • num -- 从序列的第num个位置整体旋转
    若num>=1,表示从右向左的num个数,与其左边的所有数顺时针旋转
    若num<=-1,表示从左向右的-num个数,与其右边的所有数逆时针旋转
讯享网

num=3,[3,4,5]和[1,2]进行顺时针旋转

 

num=-3,[1,2,3]和[4,5]进行逆时针旋转

注意
① |num|可以大于序列的长度,可以把队列看作是首位相连即可,如实例中num=6,等价于num%5=1,即num=1的效果,负数同理。
② num=0以及序列长度的倍数翻转没有效果,即序列不变。
③ 旋转的结果也可以通过同时popleft()和append()、pop()和appendleft()两种方式得到相同结果。但时间复杂度回变高,因此旋转更好一些。
关于旋转的应用可看例题:找出游戏的获胜者

in操作符、index()查找索引位置、copy()复制一个新队列、count()统计队列中元素个数等均可使用。

相比于list实现的队列,deque实现拥有更低的时间和空间复杂度。list实现出队(pop)和插入(insert)时的空间复杂度大约为O(n),deque在出队(pop)和入队(append)时的时间复杂度是O(1)。

使用代替,因为效率比高
这是因为:列表实现是基于数组的。从列表中删除第一个项,它需要左移个项来填补空白。 实现使用双向链表。因此无论deque有多大,都需要一个常量的操作数。
即:T(n)=O(1),而:T(n)=O(n)

小讯
上一篇 2025-06-09 10:13
下一篇 2025-06-02 14:10

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/176463.html