新闻中心

Python中deque的操作整理

2025-11-18
浏览次数:
返回列表
Python中的deque是collections模块提供的高效双端队列,适用于两端频繁添加和删除的场景。相比列表,其头部操作时间复杂度为O(1)。通过from collections import deque创建,可初始化为空或从可迭代对象构建,并支持设置最大长度。d.append(x)和d.appendleft(x)分别在右、左添加元素;d.pop()和d.popleft()移除并返回对应端元素,空时抛出IndexError。支持批量操作如d.extend()和d.extendleft()(后者插入顺序反转),还可通过d.rotate(n)旋转元素,正数向右、负数向左。d.clear()清空,d.count(x)统计,d.index(x)查找索引,d.insert(i, x)在指定位置插入(不推荐高频使用)。设maxlen后,超长时自动弹出对端元素,适合滑动窗口等应用。总体上,deque在两端操作性能优于list,能显著提升效率。

python中deque的操作整理

Python中的deque(双端队列)是collections模块提供的一个高效容器类型,特别适合在两端进行添加和删除操作。相比列表,它在头部插入或删除元素时性能更优,时间复杂度为O(1)。

创建 deque

导入collections模块后使用deque()构造函数创建:

from collections import deque
<h1>空的 deque</h1><p>d = deque()</p><h1>从可迭代对象初始化</h1><p>d = deque([1, 2, 3])</p><h1>指定最大长度(超出时自动弹出旧元素)</h1><p>d = deque(maxlen=5)</p>

基本添加操作

支持在左右两端添加元素:

乐彼多用户商城系统LBMall(.net) 乐彼多用户商城系统LBMall(.net)

乐彼多用户商城系统,采用ASP.NET分层技术和AJAX技术,运营于高速稳定的微软.NET+MSSQL 2005平台;完全具备搭建超大型网络购物多用户网上商城的整体技术框架和应用层次LBMall 秉承乐彼软件优秀品质,后台人性化设计,管理窗口识别客户端分辨率自动调整,独立配置的菜单操作锁,使管理操作简单便捷。待办事项1、新订单、支付、付款、短信提醒2、每5分钟自动读取3、新事项声音提醒 店铺管理1

乐彼多用户商城系统LBMall(.net) 0 查看详情 乐彼多用户商城系统LBMall(.net)
  • d.append(x):在右侧添加元素x
  • d.appendleft(x):在左侧添加元素x
d = deque([2, 3])
d.append(4)        # deque([2, 3, 4])
d.appendleft(1)    # deque([1, 2, 3, 4])

删除与弹出元素

从两端移除元素并返回值:

  • d.pop():移除并返回最右边的元素
  • d.popleft():移除并返回最左边的元素
d = deque([1, 2, 3])
left = d.popleft()  # left=1, d=deque([2, 3])
right = d.pop()     # right=3, d=deque([2])

若deque为空,调用pop()会抛出IndexError

其他常用操作

  • d.extend(iterable):在右侧批量添加
  • d.extendleft(iterable):在左侧批量添加(注意顺序反转)
  • d.rotate(n):将元素向右旋转n步,负数表示向左
  • d.clear():清空所有元素
  • d.count(x):统计x出现的次数
  • d.index(x):返回x第一次出现的索引(不存在时报错)
  • d.insert(i, x):在位置i插入x(不推荐频繁使用,影响性能)
d = deque([1, 2, 3])
d.extend([4, 5])           # deque([1, 2, 3, 4, 5])
d.extendleft([0, -1])      # deque([-1, 0, 1, 2, 3, 4, 5]) 注意顺序
d.rotate(2)                # deque([4, 5, -1, 0, 1, 2, 3])
d.rotate(-1)               # deque([5, -1, 0, 1, 2, 3, 4])

限制长度的 deque

设置maxlen后,当添加新元素导致超长时,对端元素会被自动弹出:

d = deque(maxlen=3)
d.append(1)
d.append(2)
d.append(3)
d.append(4)  # 自动弹出最左边的1
print(d)     # deque([2, 3, 4], maxlen=3)

这种特性非常适合实现滑动窗口、最近访问记录等场景。

基本上就这些。deque在需要频繁在两端操作数据时非常实用,比list更高效,合理使用能提升程序性能。

以上就是Python中deque的操作整理的详细内容,更多请关注其它相关文章!


# 适用于  # 奢侈品的营销推广  # 唐山网站建设清单  # 西双版纳网站优化服务  # 网站推广和优化怎么做  # 庐江网站推广设计招聘网  # 网站seo诊断优化方案有哪些  # 盐城出名的英文网站推广  # 抚州服装网站建设  # 定西市网站建设视频  # sen与seo的区别  # 相关文章  # python  # 为空  # 清空  # 如何做  # 抛出  # 迭代  # 自动弹出  # 移除  # 多用户  # 可迭代对象  # app 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 微信客户端如何收红包_微信客户端接收红包使用教程  React中useState与局部变量:理解组件状态管理与渲染机制  Win11怎么开启省电模式_Win11电池节电模式自动开启  excel怎么制作工资条 excel快速生成工资条的方法  印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】  精准捕获:如何在页面中监听除特定元素外的所有点击事件  为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法  Win11怎么查看电脑配置_Win11硬件配置检测工具使用  Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南  内存疯狂猛猛涨价:主板销量直接腰斩!  如何在Promise链中优雅地中断后续then执行  163邮箱注册官网 免费申请163个人邮箱  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  深入理解Promise链:如何在catch后中断then的执行  一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰  必由学官方网站入口 必由学学生教师共用登录通道  一加 14R 快充无反应_一加 14R 充电优化  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  J*aScript中在Map循环中检测并处理空数组元素  Selenium Python中处理点击后新窗口加载冻结问题的策略与实践  Win11怎么关闭快速启动_Win11彻底关机设置教程  从J*aScript对象中精确提取指定属性的教程  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  Golang如何使用new_Go new分配内存机制讲解  CSS Grid如何控制元素对齐_align-items与justify-items组合使用  Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择  Django表单验证失败时保留用户输入数据的最佳实践  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  b站怎么删除评论_b站评论管理与删除操作  c++20的std::jthread是什么_c++可中断线程与RAII式管理  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  移动端XML文件怎么转换成Excel 手机和平板上的解决方案  PHP 枚举:根据字符串获取枚举案例的策略与实现  Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】  MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  Python自定义类排序:解决lambda键值访问TypeError的实践指南  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  使用J*aScript检测输入元素是否包含在特定类中  微信聊天记录怎么加密_微信聊天记录加密方法  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  windows10怎么查看本机ip_windows10命令提示符ipconfig使用  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId  谷歌google账号怎么注册账号 谷歌账号注册官方流程  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  如何使用Node.js csv 包按条件移除含空字段的CSV记录  Golang如何实现状态模式管理对象状态_Golang State模式实现技巧  海棠电脑版入口_通过电脑访问海棠官网阅读 

搜索