当前位置:网站首页 > Python编程 > 正文

python deque函数(python中deque())



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)

到此这篇python deque函数(python中deque())的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • sigmoid函数输出范围(sigmoid函数python)2025-02-22 15:18:06
  • python怎么编写函数(python编写函数判断三角形)2025-02-22 15:18:06
  • pivot函数Python(pivot函数hive)2025-02-22 15:18:06
  • python函数总结(python 的函数)2025-02-22 15:18:06
  • Python函数递归调用(python 递归调用)2025-02-22 15:18:06
  • python 字典 增加(python字典增加元素代码)2025-02-22 15:18:06
  • win32gui.FindWindowEx的参数python(pywin32 findwindow)2025-02-22 15:18:06
  • python函数总结(python函数总结报告)2025-02-22 15:18:06
  • python服务器部署上线流程(python3 服务器)2025-02-22 15:18:06
  • python 函数的类型(python函数有哪几类)2025-02-22 15:18:06
  • 全屏图片