Python数组类+AI插件

目录

规划

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

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

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

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

实现

实现细节一点一点拆解

初始化

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

python 复制代码
class Array:
	 def __init__(self, capacity: int):
        self._n = capacity
        self._count = 0
        self._data = [0 for i in range(capacity)]

插入

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

python 复制代码
 def insert(self, index: int, value: int) -> bool:
        if self._count == self._n:
            print("没有可插入的位置")
            return False

        if index < 0 or index > self._count:
            print("位置不合法")
            return False

        for i in range(self._n, index, -1):
            self._data[i - 1] = self._data[i - 2]

        self._data[index] = value
        self._count += 1
        return 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 False

       for i in range(index, self._n, -1):
           self._data[i - 1] = self._data[i]

       self._count -= 1
       return 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 -1
        return 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个功能对我来说是最好用的,所以分享下,希望看到的人能喜欢。可以去官网链接下载体验下。

相关推荐
Hoper.J15 分钟前
PyTorch 模型保存与加载的三种常用方式
人工智能·pytorch·python
弱冠少年1 小时前
websockets库使用(基于Python)
开发语言·python·numpy
技术无疆1 小时前
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
开发语言·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
羊小猪~~1 小时前
机器学习/数据分析--用通俗语言讲解时间序列自回归(AR)模型,并用其预测天气,拟合度98%+
人工智能·python·机器学习·数据挖掘·数据分析·回归·时序数据库
qq_273900232 小时前
解析TMalign文本文件中的转换矩阵
python·生物信息学
阿华的代码王国2 小时前
【JavaEE】——文件IO的应用
开发语言·python
电饭叔3 小时前
《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
开发语言·python
程序猿小D3 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
杰哥在此5 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
zaim17 小时前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式