Python用于学习重要算法的模块pygorithm实例浅析


Posted in Python onAugust 16, 2018

本文实例讲述了Python用于学习重要算法的模块pygorithm。分享给大家供大家参考,具体如下:

这是一个能够随时学习重要算法的Python模块,纯粹是为了教学使用。

特点

  • 易于使用
  • 容易理解的文档
  • 快速获取算法的源代码
  • 随时获取时间复杂度

安装

  • 仅需在终端中执行以下命令:
pip3 install pygorithm

*如果你使用的是Python 2.7,请使用pip来安装。如果存在用户权限的限制,你可能需要使用pip install --user pygorithm这个命令来安装。

  • 或者你可以在这里下载源代码,然后通过以下命令来安装:
python setup.py install

快速入门

  • 对列表进行排序
from pygorithm.sorting import bubble_sort
myList = [12, 4, 3, 5, 13, 1, 17, 19, 15]
sortedList = bubble_sort.sort(myList)
print(sortedList)

运行结果:

[1, 3, 4, 5, 12, 13, 15, 17, 19]

  • 获取当前所用函数的源代码
from pygorithm.sorting import bubble_sort
code = bubble_sort.get_code()
print(code)

运行结果:

def sort(_list):
    """
    Bubble Sorting algorithm

    :param _list: list of values to sort
    :return: sorted values
    """
    for i in range(len(_list)):
        for j in range(len(_list) - 1, i, -1):
            if _list[j] < _list[j - 1]:
                _list[j], _list[j - 1] = _list[j - 1], _list[j]
    return _list

  • 计算某个算法的时间复杂度
from pygorithm.sorting import bubble_sort
time_complexity = bubble_sort.time_complexities()
print(time_complexity)

运行结果:

Best Case: O(n), Average Case: O(n ^ 2), Worst Case: O(n ^ 2).

For Improved Bubble Sort:
Best Case: O(n); Average Case: O(n * (n - 1) / 4); Worst Case: O(n ^ 2)

  • 查看模块中所有有效的函数。例如,如果你想看看排序模块中所有的排序方法,可以执行以下命令:
>>> from pygorithm.sorting import modules
>>> modules()
['bubble_sort', 'bucket_sort', 'counting_sort', 'heap_sort', 'insertion_sort', 'merge_sort', 'quick_sort', 'selection_sort', 'shell_sort']

测试

执行以下命令来运行所有的测试用例:

python3 -m unittest

这将运行tests/目录下的文件中定义的所有测试用例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现的单向循环链表功能示例
Nov 10 Python
聊聊Python中的pypy
Jan 12 Python
Python基于property实现类的特性操作示例
Jun 15 Python
Django 数据库同步操作技巧详解
Jul 19 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
python中的3种定义类方法
Nov 27 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 #Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 #Python
Python使用pickle模块储存对象操作示例
Aug 15 #Python
Linux下多个Python版本安装教程
Aug 15 #Python
Python并发之多进程的方法实例代码
Aug 15 #Python
Python使用sort和class实现的多级排序功能示例
Aug 15 #Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 #Python
You might like
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
Vue分页器实现原理详解
2019/06/28 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
爱护公共设施的标语
2014/06/24 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
购房意向书
2014/08/30 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
拉贝日记观后感
2015/06/05 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android