python算法

python 快速排序算法

旧城冷巷雨未停 提交于 2020-02-04 11:32:34
def quicksort(nums): if len(nums) <= 1: return nums # 左子数组 less = [] # 右子数组 greater = [] # 基准数 base = nums.pop() print('sssssssss') print(base) # 对原数组进行划分 for x in nums: if x < base: less.append(x) else: greater.append(x) # 递归调用 return quicksort(less) + [base] + quicksort(greater) def main(): nums = [6,1,2,7,9,3,4,5,10,8] print(quicksort(nums)) main() 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 来源: https://www.cnblogs.com/pp8080/p/12258534.html

机器学习三 -- 用Python实现K-近邻算法

我与影子孤独终老i 提交于 2020-02-04 07:57:55
Python语言实现机器学习的K-近邻算法 写在前面 额、、、最近开始学习机器学习嘛,网上找到一本关于机器学习的书籍,名字叫做《机器学习实战》。很巧的是,这本书里的算法是用Python语言实现的,刚好之前我学过一些Python基础知识,所以这本书对于我来说,无疑是雪中送炭啊。接下来,我还是给大家讲讲实际的东西吧。 什么是K-近邻算法? 简单的说,K-近邻算法就是采用测量不同特征值之间的距离方法来进行分类。它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的新数据之后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取出样本集中特征最相似数据的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是K-近邻算法名称的由来。 提问:亲,你造K-近邻算法是属于监督学习还是无监督学习呢? 使用Python导入数据 从K-近邻算法的工作原理中我们可以看出,要想实施这个算法来进行数据分类,我们手头上得需要样本数据,没有样本数据怎么建立分类函数呢。所以,我们第一步就是导入样本数据集合。 建立名为kNN.py的模块,写入代码: 1 from numpy import * 2 import operator 3 4 def createDataSet(): 5 group =

python函数

我只是一个虾纸丫 提交于 2020-02-04 05:25:27
本文目录 函数基础 函数的返回值 函数的参数 函数对象 函数嵌套 名称空间 作用域 闭包函数 装饰器 函数递归 三元表达式、列表生成式、字典生成式 内置函数 迭代器 生成器 函数基础 函数,即具备某一功能的工具。 函数的存在意义:程序的组织结构不清晰,可读性差;代码冗余;可扩展性差 使用函数必须遵循的规则:先定义,后调用 def 函数名(参数1,参数2,...): """ 文档注释 """ code1 code2 code3 ...... return 返回值 def:定义函数的关键字 函数名: 就相当于一个变量名,指向函数的内存地址, 注意:函数的内存地址()就可以出发函数体代码的执行 参数: 参数是函数的调用者为函数体代码传值的媒介,在python中函数的参数无需声明类型 """文档注释""" : 推荐写上 代码块:就是函数体功能的具体实现 return 返回值 :函数体代码块运行的成果 定义无参函数:当函数体代码逻辑不依赖任何传入的值就能执行,就不需要定义函数 定义有参函数:当函数体的代码逻辑依赖于外部调用者传入的值才能执行,必须定义参数用来接收外部传入的值 #1.1 无参函数 # def foo(): # print('from foo') # foo() #1.2 有参函数 # def bar(x,y): # print(x,y) # bar(1,2) #1.3 空函数

Python为什么成为千亿体育QY8.IN人工智能的首选语言

◇◆丶佛笑我妖孽 提交于 2020-02-04 03:25:03
之前一直都是在学习Python与机器学习,深度学习。但是究竟为什么在众多的编程语言中选择Python作为人工智能的首选语言呢我一直不得而知,今天就以千亿体育QY8.IN的理解来梳理下吧。首先在我不再赘述Python的前世今生,只是深入的说一下Python与人工智能的关系。 一、从人工智能说起 首先人工智能话题的热度再度升起应该是开始于一个引发全民狂欢的科技新闻:2016年到2017年,谷歌开发的围棋AI程序AlphaGo接连击败欧洲冠军樊麾、韩国九段棋手李世石、世界围棋冠军柯洁,登顶地球之巅。此时距离深蓝在国际象棋中横扫人类选手刚好20年。几个月后,AlphaGo的升级版化名AlphaGo Zero卷土重来,仅仅通过3天的自我训练就击败了已经击败了李世石的AlphaGo Lee,经过40天的训练,又轻描淡写的击败了已经击败了柯洁的AlphaGo Master,没有一点防备,也没有一丝顾虑,围棋这个被认为是人类智慧遮羞布的领域就这样被机器按在地上狠狠摩擦,这也就彻底引发了舆论的狂欢。这个时候,许多人说人工智能的时代又一次到来… 在上面所说的是人工智能在游戏领域的应用,其实人工智能的应用还有很多,比如计算机视觉、语音识别、无人驾驶、自然语言处理、推荐系统等,在接下来,我们就重点讲讲我们本文的核心话题:Python为什么成为人工智能的首选语言吧。 二

【Python】实现A*算法解决8 puzzle问题

强颜欢笑 提交于 2020-02-03 22:12:47
问题: 8 Puzzle game - Develop and code an algorithm to solve the 8 puzzle game. You will probably want to use A* to solve this one. The maze should be randomizeable, and the program should show every move to solve the puzzle. Your program should be able to work for any size board. You must show at least two puzzles being solved, one for 8×8, and one for 10×10. 翻译为: 8益智游戏-开发并编码一个算法来解决8益智游戏。你可能想用A*算法来解决这个问题。迷宫应该是随机的,程序应该显示出解决这个难题的每一步。你的程序应该可以在任何大小的板上工作。您必须显示至少两个正在解决的谜题,一个用于8×8,一个用于10×10。 结果如图所示: 需要的微信滴滴我 来源: CSDN 作者: winrh 链接: https://blog.csdn.net/qq_32117641/article/details/104161647

算法-排序-python

孤街醉人 提交于 2020-02-03 00:09:44
冒泡排序 __author__ = 'hp' def bubble_sort(li): "冒泡排序" n = len(li) for i in range(n-1): for j in range(n-1-i): if li[j]>li[j+1]: li[j],li[j+1] = li[j+1],li[j] def bubble_sort1(li): "冒泡排序" n = len(li) for i in range(n-1,0,-1): for j in range(i): if li[j]>li[j+1]: li[j],li[j+1] = li[j+1],li[j] # 优化 def bubble_sort2(li): n = len(li) for i in range(n-1): count = 0 for j in range(n-1-i): if li[j]>li[j+1]: li[j],li[j+1] = li[j+1],li[j] count += 1 # 如果已经有序,退出循环 if count == 0: return li = [4,3,2,1] bubble_sort1(li) print(li) 选择排序 __author__ = 'hp' # 选择排序 def select_sort(li): n = len(li) for j in range(n-1

2020/2/2-Python学习计划

[亡魂溺海] 提交于 2020-02-02 13:35:04
Python基础 上学期的课程中我学习了编译原理,虽然成绩渣渣,但是不影响我对编译过程有了整体的理解; Python作为一种计算机编程语言,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能有歧义,所以,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。Python也不例外。 最后要注意的是:Python程序是大小写敏感的,如果写错了大小写,程序会报错。 同时需要注意的是:Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进。在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。 List与Tuple Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。 Python条件 条件判断可以让计算机自己做选择,Python的if...elif...else很灵活。 条件判断从上向下匹配,当满足条件时执行对应的块内语句,后续的elif和else都不再执行 Python循环 for x in ... 循环就是把每个元素代入变量 x ,然后执行缩进块的语句。 Python提供一个 range() 函数,可以生成一个整数序列

【Python数据结构与算法笔记day17】3.1. 单向链表

左心房为你撑大大i 提交于 2020-02-02 04:56:00
文章目录 3.1. 单向链表 单向链表 节点实现 单链表的操作 单链表的实现 链表与顺序表的对比 3.1. 单向链表 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 表元素域elem用来存放具体的数据。 链接域next用来存放下一个节点的位置(python中的标识) 变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。 节点实现 class SingleNode(object): """单链表的结点""" def __init__(self,item): # _item存放数据元素 self.item = item # _next是下一个节点的标识 self.next = None 单链表的操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历整个链表 add(item) 链表头部添加元素 append(item) 链表尾部添加元素 insert(pos, item) 指定位置添加元素 remove(item) 删除节点 search(item) 查找节点是否存在 单链表的实现 class SingleLinkList(object): """单链表""" def __init__(self

【Python数据结构与算法笔记day18】3.2. 单项循环链表

坚强是说给别人听的谎言 提交于 2020-02-02 02:55:00
文章目录 3.2. 单项循环链表 单向循环链表 操作 实现 3.2. 单项循环链表 单向循环链表 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 操作 is_empty() 判断链表是否为空 length() 返回链表的长度 travel() 遍历 add(item) 在头部添加一个节点 append(item) 在尾部添加一个节点 insert(pos, item) 在指定位置pos添加节点 remove(item) 删除一个节点 search(item) 查找节点是否存在 实现 class Node ( object ) : """节点""" def __init__ ( self , item ) : self . item = item self . next = None class SinCycLinkedlist ( object ) : """单向循环链表""" def __init__ ( self ) : self . _head = None def is_empty ( self ) : """判断链表是否为空""" return self . _head == None def length ( self ) : """返回链表的长度""" # 如果链表为空,返回长度0 if self . is

【Python数据结构与算法笔记day19】3.3. 双向链表

时光怂恿深爱的人放手 提交于 2020-02-02 02:33:03
文章目录 3.3. 双向链表 双向链表 操作 实现 3.3. 双向链表 双向链表 一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。 操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(item) 链表头部添加 append(item) 链表尾部添加 insert(pos, item) 指定位置添加 remove(item) 删除节点 search(item) 查找节点是否存在 实现 class Node ( object ) : """双向链表节点""" def __init__ ( self , item ) : self . item = item self . next = None self . prev = None class DLinkList ( object ) : """双向链表""" def __init__ ( self ) : self . _head = None def is_empty ( self ) : """判断链表是否为空""" return self . _head == None def length ( self ) : """返回链表的长度"""