Python数组类+AI插件

目录

  • 规划
  • 实现
    • 初始化
    • 插入
    • 删除
    • 查找
  • AI插件
    • 单测
    • 注释
    • 调优建议
  • 小结

规划

先想清楚都写哪些,然后再动手操作

用Python写了一个简单数组类,首先思考下都写哪些功能:

  1. 插入
  2. 删除
  3. 查找
  4. 用插件做单元测试和写注释

目的只是实现一个简单的数组类,了解数组的基础功能,基本结构;重点是去分析插入,删除的时间复杂度。

实现

实现细节一点一点拆解

初始化

先写一个类,然后实现初始化的操作;代码如下:

class Array:def __init__(self, capacity: int):self._n = capacityself._count = 0self._data = [0 for i in range(capacity)]

插入

接着写插入的代码,如下:

 def insert(self, index: int, value: int) -> bool:if self._count == self._n:print("没有可插入的位置")return Falseif index < 0 or index > self._count:print("位置不合法")return Falsefor i in range(self._n, index, -1):self._data[i - 1] = self._data[i - 2]self._data[index] = valueself._count += 1return True

以上是插入的代码,只是一个简单的插入操作。接下来看下这个操作的效率,最好的情况是index值跟n值差1,最坏的情况O(n),平均是O(n),所以这个插入的时间复杂度也为O(1)

删除

接下来看下删除的代码,如下:

  def delete(self, index: int) -> bool:if index < 0 or index >= self._count:return Falsefor i in range(index, self._n, -1):self._data[i - 1] = self._data[i]self._count -= 1return True

分析完插入,删除就容易理解了。看下操作数据的效率,最好情况是O(1),即删除末尾元素;最坏的情况是O(n),需要遍历n个元素;平均是O(n)。删除的操作时间复杂度O(n)。

查找

直接上代码,如下:

    def find(self, index: int) -> int:if index < 0 or index >= self._count:return -1return self._data[index]

这个就很直接了。效率很高,因为数组支持随机访问。

AI插件

这个插件是Baidu Comate智能代码助手。我用的pycharm,可以去File->Settings->plugins,搜索Baidu Comate即可找到。如下图:
在这里插入图片描述

关闭后的位置,如下图:
在这里插入图片描述
点开如下,
在这里插入图片描述
有2个功能,单测,注释。我主要用了这2个。

单测

选中一个函数,我这选的是insert,然后点击
在这里插入图片描述
,右边就生成了单测,如下图:
在这里插入图片描述
在这里插入图片描述
这个功能效果挺好的,值得推荐下。

注释

接下来使用下注释功能,
在这里插入图片描述
点击这个,然后右边就有了注释的内容,如下图:
在这里插入图片描述
点击,我觉得写的挺好的,然后点击采纳;出现了如下图:
在这里插入图片描述
注释就写完了。

调优建议

这个功能怎么说呢?我也是体验了一下,才发现的。其实,这个功能的设计应该是挺好的,我这测试了下我的代码,还好。展示下怎么使用。在编辑器中选中一段代码,如下图:
在这里插入图片描述
然后,在右下角输入框输入"/调优建议",如下图:
在这里插入图片描述
给大家看下我的代码的分析结果。如下图:
在这里插入图片描述
代码问题写了一大堆,看下它给出的代码,如下图:
在这里插入图片描述
看下,好像跟我写的还是一样的。嘿嘿嘿

小结

数组的逻辑+单元测试+注释
挺好的一个内容。先说下数组吧,其实,数组类主要的就是插入和删除操作,这2个时间复杂度都是O(n)的,这个很重要;查找的话,就是根据下标去查找数组的值,这个就是O(1)的时间复杂度。无论是std::vector,还是UE的TArray,或者是其他的实现,时间复杂度都一样的。然后分享下这个插件的使用,其实插件的功能远不止于此,只是我觉得这2个功能对我来说是最好用的,所以分享下,希望看到的人能喜欢。可以去官网链接下载体验下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/316695.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android studio 编译一直显示Download maven-metadata.xml

今天打开之前的项目的时候遇到这个问题:android studio 编译一直显示Download maven-metadata.xml, AI 查询 报错问题&#xff1a;"android studio 编译一直显示Download maven-metadata.xml" 解释&#xff1a; 这个错误通常表示Android Studio在尝试从Maven仓库…

stm32单片机开发一、中断之外部中断实验

stm32单片机的外部中断和定时器中断、ADC中断等都由stm32的内核中的NVIC模块控制&#xff0c;stm32的中断有很多中&#xff0c;比如供电不足中断&#xff0c;当供电不足时&#xff0c;会产生的一种中断&#xff0c;这么多中断如果都接在CPU上&#xff0c;或者说CPU去处理&#…

Druid高性能数据库连接池?SpringBoot整合MyBatis整合SpringMVC整合Druid

文章目录 Druid高性能数据库连接池&#xff1f;SpringBoot整合MyBatis整合SpringMVC整合Druid异常记录spring-boot-starter-parent作用Druid介绍什么是数据库连接池&#xff1f;为什么选择Druid数据库连接池整合SpringBoot,MyBatis,SpringMVC,Druid到Maven项目的真个流程pom文件…

Django-admin组件

Django-admin组件 admin是django中提供的一套可视化工具&#xff1a;用于对ORM中定义的表进行增删改查。 1 概览 在django项目启动时&#xff0c;自动找到注册到admin中的所有model中定义的类&#xff0c;然后为这些类生成一系列的URL和视图函数&#xff0c;实现基本增删改查…

Kafka 3.x.x 入门到精通(06)——Kafka进阶

Kafka 3.x.x 入门到精通&#xff08;06&#xff09;&#x1f449;&#x1f449;&#x1f449;&#x1f449; Kafka进阶 3. Kafka进阶3.1 Controller选举3.2 Broker上线下线3.3 数据偏移量定位3.4 Topic删除3.5 日志清理和压缩3.7 页缓存3.8 零拷贝3.9 顺写日志3.10 Linux集群部…

串口通信标准RS232 RS485 RS422的区别

很多工程师经常把RS-232、RS-422、RS-485称为通讯协议&#xff0c;其实这是不对的&#xff0c;它们仅仅是关于串口通讯的一个机械和电气接口标准&#xff08;顶多是网络协议中的物理层&#xff09;&#xff0c;不是通讯协议&#xff0c;那它们又有哪些区别呢&#xff1a; 第一…

python学习笔记----数据容器(六)

一、数据容器的入门 python中的数据容器&#xff1a;一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为1个元素。每一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 数据容器根据特点的不同&#xff0c;如&#xff1a; 是否…

PaddlePaddle与OpenMMLab

产品全景_飞桨产品-飞桨PaddlePaddle OpenMMLab算法应用平台

Java的逻辑控制和方法的使用介绍

前言 程序的逻辑结构一共有三种&#xff1a;顺序结构、分支结构和循环结构。顺序结构就是按代码的顺序来执行相应的指令。这里主要讲述Java的分支结构和循环结构&#xff0c;由于和C语言是有相似性的&#xff0c;所以这里只会提及不同点和注意要点~~ 注意在C语言中&#xff0c;…

[C++][算法基础]整数划分(统计动态规划)

一个正整数 &#x1d45b; 可以表示成若干个正整数之和&#xff0c;形如&#xff1a;&#x1d45b;&#x1d45b;1&#x1d45b;2…&#x1d45b;&#x1d458;&#xff0c;其中 &#x1d45b;1≥&#x1d45b;2≥…≥&#x1d45b;&#x1d458;,&#x1d458;≥1。 我们将这…

ThinkPHP Lang多语言本地文件包含漏洞(QVD-2022-46174)漏洞复现

1 漏洞描述 ThinkPHP是一个在中国使用较多的PHP框架。在其6.0.13版本及以前&#xff0c;存在一处本地文件包含漏洞。当ThinkPHP开启了多语言功能时&#xff0c;攻击者可以通过lang参数和目录穿越实现文件包含&#xff0c;当存在其他扩展模块如 pear 扩展时&#xff0c;攻击者可…

notion使用小tip(待补充)

可以替代思维导图是一个很棒的软件 公式编辑&#xff1a;latex 网站链接&#xff1a;LATEX语法 一些常用的用法&#xff1a; 下标&#xff1a;a_{Si} 分数&#xff1a;\frac{}{} 乘&#xff1a;\times 向量&#xff1a;\vec{} pai (3.14159…) : \pi 直接用公式编辑器&#…

React正式更新!开始学习React 19!

本文为原创文章&#xff0c;原文链接&#xff1a;J实验室&#xff0c;未经授权请勿转载 今年2月份&#xff0c;React 发布消息确认今年发布 v19 版本&#xff0c;尘封两年的版本号终于要更新了&#xff08;详情点击&#xff1a;React 19 发布在即&#xff0c;抢先学习一下新特性…

《Fundamentals of Power Electronics》——三端电池的旋转、负载差分连接

以下是关于三端电池的旋转的相关知识点&#xff1a; Buck电路、Boost电路和Buck-Boost电路均包含一个与单刀单掷开关相连的电感。如下图所示。 将上图中的电感和开关网络视为一个标有a,b,c三端的基础电池。该电池在电源和负载之间有三种不同的连接方式。a-A b-B c-C连接方式组…

每日两题 / 46. 全排列 41. 缺失的第一个正数(LeetCode热题100)

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 经典回溯题&#xff0c;每次搜索选择未选择数字中的一个 当选择了n个数时&#xff0c;将已经选择的数加入答案 class Solution { public:vector<vector<int>> permute(vector<int>& nums) {vector…

Transformer模型详解02-Positional Encoding(位置编码)

文章目录 什么是位置编码连续有界为什么要有界为什么要连续 位置编码的演变用整型值标记位置用[0,1]范围标记位置用二进制向量标记位置用周期函数&#xff08;sin&#xff09;来表示位置sin函数周期振幅&#xff0c;相移&#xff0c;垂直位移频率波长 sin表示位置 用sin和cos交…

QT学习之读取xml中信息

背景&#xff1a; 我们每次注册后会生成对应的启动码文件&#xff0c;格式如下&#xff0c;启动码最后要在测试工具使用的进行一个验证&#xff0c;验证通过后模块才能使用。所以我希望每次的xml都放在一个文件夹里&#xff0c;等我选择文件夹后&#xff0c;能提取所有xml中的对…

【Node.js】03 —— HTTP 模块探索

&#x1f31f;Node.js之HTTP模块探索✨ &#x1f31f;引言 在网络编程中&#xff0c;HTTP协议无处不在。在Node.js的世界里&#xff0c;我们可以通过内置的http模块来轻松创建HTTP服务器和客户端&#xff0c;实现数据的接收和发送。今天就让我们一起打开这扇门&#xff0c;探索…

【QT进阶】Qt http编程之实现websocket server服务器端

往期回顾 【QT进阶】Qt http编程之json解析的简单介绍-CSDN博客 【QT进阶】Qt http编程之nlohmann json库使用的简单介绍-CSDN博客 【QT进阶】Qt http编程之websocket的简单介绍-CSDN博客 【QT进阶】Qt http编程之实现websocket server服务器端 一、最终效果 通过ip地址和端口…

代码随想录算法训练营第二十六天||39. 组合总和、40.组合总和II、131.分割回文串

文章目录 一、39. 组合总和 思路 二、40.组合总和II 思路 三、131.分割回文串 思路 一、39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取…