Python数组类+AI插件

简介: Python数组类+AI插件

规划

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

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

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

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

实现

实现细节一点一点拆解

初始化

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

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

插入

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

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)

删除

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

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

查找

直接上代码,如下:

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

相关文章
|
2天前
|
算法 Python
Python新式类和经典类
Python新式类和经典类
|
4天前
|
安全 测试技术 Python
Python类中的Setter与Getter:跨文件调用的艺术
Python类中的Setter与Getter:跨文件调用的艺术
11 3
|
4天前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之建了一个python 的 UDF脚本,生成函数引用总是说类不存在,是什么导致的
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
15小时前
|
人工智能 算法 定位技术
【推荐100个unity插件之1】2d使用A*Pathfinding插件实现敌人AI,并自动躲避障碍物
【推荐100个unity插件之1】2d使用A*Pathfinding插件实现敌人AI,并自动躲避障碍物
6 0
|
1天前
|
Python
经验大分享:python类函数,实例函数,静态函数
经验大分享:python类函数,实例函数,静态函数
|
2天前
|
自然语言处理 Java API
Python之:Python中的类
Python之:Python中的类
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
影中的ai技术
【6月更文挑战第27天】电影中的ai技术
156 65
|
4天前
|
存储 人工智能 自然语言处理
LLM技术全景图:技术人必备的技术指南,一张图带你掌握从基础设施到AI应用的全面梳理
LLM技术全景图:技术人必备的技术指南,一张图带你掌握从基础设施到AI应用的全面梳理
LLM技术全景图:技术人必备的技术指南,一张图带你掌握从基础设施到AI应用的全面梳理
|
3天前
|
人工智能 运维 Cloud Native
活动回顾丨云原生技术实践营 Serverless + AI 专场 (深圳站) 回顾 & PPT 下载
云原生技术实践营 Serverless + AI 专场 (深圳站) 回顾。
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术对法律行业有何影响?
【6月更文挑战第27天】AI技术对法律行业有何影响?
14 3

热门文章

最新文章