Python数据类型:双端队列deque-比列表list性能更高的一种数据类型
admin
2023-07-23 19:42:37
0

Python数据类型:双端队列

说到容器类型,大家第一时间想到的多半是list,而list确实也能解决大部分的需要,但碰到列表内的数据量相当大的时候,性能问题就显得尤为重要;再或者列表被恶意注入一个无穷大的数据量时,就可能会暴露出安全问题来。较好的替代方法是:collections.deque。获得性能或安全的同时,牺牲的是数据大小。

deque队列两端取出或者删除时间复杂度都是O(1),而列表都是O(n),队列的性能比列表更好

简介

欢迎关注我的公众号:Python雁横

collections.deque对象(双端队列),支持从任意一端增加删除元素。deque是线程安全的,内存高效的队列,它被设计为从两端追加和弹出都非常快。

创建deque对象

deque() 用于创建一个deque对象

可选参数

  • iterable 一个可迭代对象,如列表,元组
  • maxlen 最大长度,超出最大长度,会将之前的元素挤出去

示例:

from collections import deque
dq = deque([1,2,3,4]],maxlen=10)

deque对象的方法

dq.append(x) 在右端添加x

>>>dq.append(5)
>>>print(dq)
deque([1, 2, 3,4,5])

dq.appendleft(x) 在左端添加x

>>>dq.appendleft(0)
>>>print(dq)
deque([0,1,2,3,4,5])

dq.pop() 在右端弹出元素,若队列无元素,会报错

>>>dq.pop()
5

dq.popleft() 在左端弹出元素,若队列无元素,会报错

>>>dq.popleft()
0

dq.extend(iterable) 和列表的extend类似,在右侧扩展队列,参数是一个可迭代对象

>>>dq.extend([5,6,7,8])

dq.extendleft(iterable) 同理

>>>dq.extendleft([5,6,7,8])

dq.remove(value) 移除第一个找到的value,若未找到,会导致IndexError

dq.remove(3)

dq.clear() 清空队列

dq.clear()

rotate(n) 如果n>0,所有元素向右移动n个,否则向左

dq.rotate(5)

如果你学到什么,记得给我点个赞哦,也可以关注我的公众号(Python雁横)获取更多有趣的教程

相关内容

热门资讯

国防部:民进党当局蓄意制造紧张... 6月25日下午,国防部举行例行记者会,国防部新闻发言人张晓刚大校答记者问。记者:美日正在开展“勇敢之...
顶级阴阳!韩记者提问韩国队主帅... 2026年美加墨世界杯A组第三轮比赛中,韩国队在“打平即出线”的大好形势下,以0比1不敌南非队,场上...
苹果iOS 27版日历更新汇总... 6 月 25 日消息,科技媒体 9to5Mac 昨日(6 月 24 日)发布博文,报道称在 iOS ...
董子健喊“我很空”,韩红喊“走... 图片为AI生成 出品|搜狐科技 作者|张莹 6月17日,北京,《抓特务》首映礼。影片配乐制作人韩红用...
海淀又现全球首次,银河通用机器... 记者6月25日从海淀区获悉,银河通用Galbot S1具身智能重载机器人目前已在宁德时代量产线上7×...
新质策源导刊丨格蓝若:让人形机... 具身智能:万亿赛道的 “价值兑现”之考(上) 编者按 资本潮涌下,具身智能正在叩响“价值兑现”的大门...
微软终于修复Win11蓝牙顽疾... IT之家 6 月 25 日消息,据 Windows Latest 报道,微软刚刚推出迄今为止规模最大...
车企不“造人”,就出局? 来源 | 伯虎财经(bohuFN) 作者 | 楷楷 2026年的全球车圈,都将目光投向了一个全新的赛...
巴拿马船舶在中国港口遭针对?外... 澎湃新闻记者 杨文钦 于潇清6月25日,外交部发言人郭嘉昆主持例行记者会。有记者提问,据报道,巴拿马...
外交部:委内瑞拉强震暂无中国公... 6月25日,外交部发言人郭嘉昆主持例行记者会。在回答有关委内瑞拉地震中有无中国公民伤亡的问题时,郭嘉...