恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

02_动态数组的实现

  • 首页
  • 资讯中心
  • /
  • 02_动态数组的实现

相关资讯

筛选适合实体店的AI自动回复私信工具的实操指南 2026/8/2 17:03:53
Jupyter Notebook转Python脚本:从交互探索到自动化执行的完整指南 2026/8/4 16:44:06
Keil MDK与STM32入门:从寄存器操作到LED点亮的完整工程实践 2026/8/4 16:56:18

最新资讯

【单片机课设毕设项目】基于 STM32/51 单片机的小型农业物联网监测终端设计 基于 STM32 单片机的多按键模式环境调控设备设计与实现(011702)
【单片机毕设案例分享】基于 51 单片机的田间土壤温湿度监测与智能调控装置设计 基于 STM32 单片机的多模式嵌入式环境监测控制系统设计与实现(011702)
揭秘GitStalk核心组件:用户资料模块与活动流处理的实现细节
智慧灌区LoRa+4G闸门监控管理系统方案
中小企业怎么选智能客服?2026年saas智能客服选购指南分享
Redbox-React性能优化:提升大型React应用错误处理效率的5个方法

今日推荐

电力系统调度中的源荷不确定性建模与优化实践
VGG-T3技术解析:3D重建速度的革命性突破
深度解析旅游网站建设的意义及其对行业发展的深远影响与核心价值体现

本周热门

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案
分布式配置中心选型实战:Nacos与Consul在创业场景下的对比
MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

02_动态数组的实现

发布时间:2026/8/6 19:50:43
02_动态数组的实现 1. 数组的功能定义方法说明size()返回数组中元素个数is_empty()判断数组是否为空insert(index, item)在指定位置插入元素append(item)在末尾插入元素remove(index)删除指定位置的元素set(index, item)修改指定位置的元素get(index)获取指定位置的元素find(item)查找数组中某个元素首次出现的位置__str__()返回字符串 [元素1, 元素2, 元素3]__iter__()返回迭代器对象importrandomclassmyArray:# 初始化def__init__(self):self.__capacity10self.__items[None]*self.__capacity# 真正存储数据的容器结构因为python中没有原始的数组暂时用列表代替一下self.__size0property# 有它外面访问size可以是 数组对象.size,没有它外部访问size必须是 数组对象.size()# 数组长度defsize(self):returnself.__size# 数组是否为空defisEmpty(self):returnself.__size0# 往数组中插入元素definsert(self,index,item):# 第一步合法检查ifself.size0orindexself.__size:raiseIndexError# 第二步扩容self.__grow()# 第三步: 把[index]及其后面的元素右移foriinrange(self.__size,index,-1):self.__items[i]self.__items[i-1]# 第四步把item放在[index]的位置self.__items[index]item self.__size1# 扩容def__grow(self):# 选中你要抽取出来构成一个函数的所有代码按快捷键 Ctrl Alt M输入函数名ifself.__sizeself.__capacity:self.__capacityself.__capacityself.__capacity//2# 扩容 1.5倍# self.__capacity self.__capacity (self.__capacity 1)new_items[None]*self.__capacityforiinrange(self.__size):new_items[i]self.__items[i]self.__itemsnew_items# 往数组尾部追加元素defappend(self,item):# 第一步扩容self.__grow()# 第二步将元素放进去self.__items[self.__size]item# 第三步个数1self.__size1# 删除数组元素defremove(self,index):# 第一步:检查index是否在已有元素的下标范围self.__check_exists_index(index)# 第二步将[index]后的元素往前移动foriinrange(index,self.__size-1,1):self.__items[i]self.__items[i1]# 第三步把size - 1self.__size-1# 末尾位置置空self.__items[self.__size]Nonedef__check_exists_index(self,index):#检查index是否在已有元素的下标范围ifself.size0orindexself.__size:raiseIndexError# 修改数组元素defset(self,item,index):# 第一步检查index是否在已有元素的下标范围self.__check_exists_index(index)# 第二步直接覆盖[index]位置的元素self.__items[index]item# 查找元素deffind(self,item):fori,eleinenumerate(self.__items):ifeleitem:returnireturn-1# 没找到返回-1 或者抛异常# _str__ 是一个非常实用的魔术方法Magic Method专门用来自定义对象的字符串表示形式。# 有它可以打印出元素的值否则只能打印出__main__.myArray object at 0x000001F5C8B03380def__str__(self):result[foriinrange(self.__size):resultstr(self.__items[i])result,ifiself.__size-1elsereturnresult]# 迭代器有了它在外部可以直接用for循环遍历def__iter__(self):index0whileindexself.__size:yieldself.__items[index]index1if__name____main__:arraymyArray()print(f最开始的列表长度:{array.size})print(f是否为空:{array.isEmpty()})foriinrange(16):indexrandom.randint(0,array.size)array.insert(index,i)print(array,array.size)print(array)array.append(55)array.append(66)array.append(77)print(array)array.remove(1)print(array)array.remove(5)print(array)array.remove(10)print(array)array.set(22,1)print(array)print(array.find(2))print(array.find(100))foreleinarray:# for循环遍历需要迭代器 __iter__print(ele)

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号