Python数组类+AI插件

news/2024/9/23 3:19:54/

目录

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

规划

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

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

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

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

实现

实现细节一点一点拆解

初始化

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

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

插入

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

python"> 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)

删除

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

python">  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)。

查找

直接上代码,如下:

python">    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.ppmy.cn/news/1445697.html

相关文章

移动应用安全

移动应用安全 移动应用安全主要关注Android、iOS、Windows Phone等平台上移动应用软件安全状态。它涉及应用程序在其设计运行的平台上下文中的安全问题、它们使用的框架以及预期的用户集。所有主流的移动平台都提供大量可选的安全控制&#xff0c;旨在帮助软件开发人员构建安全…

GIT入门到实战

文章目录 版本控制常见的版本控制工具版本控制分类Git与SVN的主要区别 Git基本理论&#xff08;重要&#xff09;三个区域工作流程 GIT文件操作文件的四种状态查看文件状态忽略文件 GIT 常见问题 版本控制 版本控制&#xff08;Revision control&#xff09;是一种在开发的过程…

Spring - 3 ( 12000 字 Spring 入门级教程 )

一&#xff1a;Spring Web MVC入门 1.1 响应 在我们前⾯的代码例子中&#xff0c;都已经设置了响应数据, Http 响应结果可以是数据, 也可以是静态页面&#xff0c;也可以针对响应设置状态码, Header 信息等. 1.2 返回静态页面 创建前端页面 index.html(注意路径) html代码 …

蓝桥杯国赛算法复习

复习内容 1.spfa 2.背包问题 3.动态规划其他常考问题 4.dfs 5.bfs 6.并查集 一、基础题回顾 1.spfa 问题描述 蒜头君准备去参加骑车比赛&#xff0c;比赛在 n 个城市间进行&#xff0c;编号从 1 到 n。选手们都从城市 1 出发&#xff0c;终点在城市 n。 已知城市间有 m 条道…

docker打包容器为镜像

要使用Docker将容器打包成镜像&#xff0c;你需要执行以下步骤&#xff1a; 创建一个Dockerfile&#xff0c;定义如何构建你的镜像。 使用docker build命令来创建镜像。 以下是一个简单的示例&#xff1a; 首先&#xff0c;创建一个名为Dockerfile的文件&#xff0c;内容如…

【云原生】Docker 实践(一):在 Docker 中部署第一个应用

Docker 实践&#xff08;一&#xff09;&#xff1a;在 Docker 中部署第一个应用 1.使用 YUM 方式安装 Docker2.验证 Docker 环境3.在 Docker 中部署第一个应用3.1 小插曲&#xff1a;docker pull 报 missing signature key 错误3.2 重新安装 Nginx 1.使用 YUM 方式安装 Docker…

nginx负载均衡策略

1、轮询&#xff08;Round Robin&#xff09;-默认 依次转发&#xff0c;适用于多台服务器性能相近 2、加权轮询&#xff08;Weighted Round Robin&#xff09; weight高的优先分配&#xff0c;适用于多台服务器性能相差较大 3、IP hash 基于客户端 IP 地址的负载均衡策略&a…

前端科举八股文-HTML篇

前端面试-HTML篇 什么是http?http和https有什么区别https的加密过程?http2.0有什么改进?src和href的区别对html语义化标签的理解?script标签中defer和asyc的区别?举出几个常见的行内、块级元素什么是webworker&#xff1f;iframe的优缺点&#xff1f;介绍一下tcp三次握手f…