python算法

python实现各种排序算法

邮差的信 提交于 2019-11-29 15:18:06
冒泡排序 """ 分析 1. 算法是一种与语言无关的东西,更确切地说就算解决问题的思路,就是一个通用的思想的问题 2. 冒泡算法作为最简单的一种排序算法,我们的关注点不应该是代码本身,而应该是思想 3. 冒泡排序思想的侧重点有两点:走一趟干到底选出最大的放到右边;走几趟能够把整个序列都排序完毕 4. 当走一趟干到底的时候考虑的是j的取值, 而不是j+1, 这样能清晰地知道range的范围应该是什么 5. is_ordered 标志位:如果有序列表就不再排序,直接退出 6. 两个for循环的考虑顺序:先考虑内层循环的意义,再考虑外层循环的意义 """ def bubble_sort(alist): n = len(alist) # i 代表的是第几趟,从1开始,表示第一趟 for i in range(1, n): is_ordered = True # j 表示走一趟 for j in range(n-i): if alist[j] > alist[j+1]: alist[j], alist[j+1] = alist[j+1], alist[j] is_ordered = False if is_ordered: return if __name__ == '__main__': lis = [9, 11, 2, 2, 1, 20, 13] bubble_sort(lis)

各种排序算法的Python实现。

ε祈祈猫儿з 提交于 2019-11-29 15:17:26
大学的算法导论课确实是混过去的,到了毕业的时候结果连个冒泡排序都不能裸写出来,只记得一些算法的基本理论,如分治法、递归、动态规划、回溯、图论、时间空间理论这些。大概知道这些排序算法的实现原理,真在纸上写出来脑子又是一团浆糊。最近在网上看到九章算法的网络课程费用是1299,团购价是799,真是狠不下心去买,也后悔大学里没好好学点算法,浪费了那些学费。 今天花了一天的时间用Python实现了7种排序算法,刚开始的时候觉得非常乱,完全不知道怎么写。不过写着写着思路就变得清晰了,对于排序算法的理解也越发清晰了,好像脑子里有一排数字在比来比去、移来移去,真的是非常有意思。真得感叹一声, 抽象能力真的是软件工程师的必备能力啊 ! 排序算法的本质其实是数字的各种比较方式和移动方式。回到我们大一C语言求一个数组中的最大数和最小数的那门上机课上。其实现原理很简单,就是把第一个数字作为初始数字跟后面的数字依次比较,若后面的数字比它大就跳过,若比它小就拿后面的数字替换掉它,直到遍历这个数组结束,最后得出的这个数就是最小数。 def the_min_of_lists(lists): min = lists[0] for i in range(1,len(lists)): if min > lists[i]: min,lists[i] = lists[i],min return min 冒泡排序

设计模式(python描述)

前提是你 提交于 2019-11-29 15:05:18
目录 一、创建型设计模式 二、结构型设计模式 三、行为型设计模式 一、创建型设计模式 1、简单工厂模式 内容: 不直接向高层类暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例。 角色: 工厂角色(Creator) 抽象产品角色(Product) 具体产品角色(Concrete Product) python示例: from abc import ABCMeta, abstractmethod class Payment(metaclass=ABCMeta): """ 抽象产品角色 # 抽象类,必须子类必须实现这个方法。 """ @abstractmethod def pay(self, money): pass class Alipay(Payment): """ 具体产品角色 """ def __init__(self, huabei=False): self.huabei = huabei def pay(self, money): if slelf.huabei: print("花呗支付%d元" % money) else: print("支付宝支付%d元" % money) class WechatPay(Payment): def pay(self, money): print("微信支付%d元" % money) class PaymentFactory

初识python之了解程序设计基本方法

自闭症网瘾萝莉.ら 提交于 2019-11-29 14:33:37
对于用计算机解决一些问题,这里有一个程序设计的基本方法,主要分为六个步骤,其分析和实现过程如下: (1)分析问题:利用计算机解决问题需要结合计算机技术的发展水平和人类对问题的思考程度,在特定技术和社会条件下,分析出一个问题最经济,最合理的计算部分,进而用程序实现。 (2)划分边界:在确定问题计算部分的基础上进一步划分问题边界,即明确问题的输入数据,输出数据和对数据处理的要求。 (3)设计算法:我认为设计算法是最明确,最有目的性的,就我们目前初入python的新手来说,就是如何选择一种最方便简洁,最高效却能很好的解决问题的一种程序操作算法,关键在于自己能容易懂,上手简单。 (4)编写程序:根据IPO描述和算法设计,编写一套自己能清楚明白的程序 (因为程序是自己编写的,所以首先得自己弄懂,然后能看懂自己写的是什么,必要的话要学会适当的添加一些注释) (5)调试测试:将编写好的程序保存为文件,然后运行该程序。当程序较为复杂时,很难保证一次编写后的程序能够直接而且正确地运行,所以这一阶段主要任务就是查错补漏,尽可能的找出程序中所存在的问题 (6)升级维护:任何程序都有生命周期,有很多事件会促使程序生命结束。所以,随着问题使用场景,输入和输出要求等因素的变化,程序也需要不断维护和升级。 来源: https://www.cnblogs.com/jackyfive/p/11519692.html

第六章.模块

风格不统一 提交于 2019-11-29 14:05:29
6.1模块的定义 模块 : 可以吧一个py文件或一个文件夹(包)当作一个模块,以便于以后其他py文件的调用,对程序员直接提供某方面功能的文件. 包 文件夹 存储了多个py文件的文件夹 如果导入的模块是一个包,这个包里的模块默认不可使用 导入一个包相当于执行 init .py文件中的内容 包的定义(python2与python3的区别七): python2:文件夹中必须有_ _ init _ _.py文件 python3:不需要有_ _ init _ _.py文件 建议:推荐以后写代码,无论是python2还是python3,都要加上此文件 6.2模块的分类(类库) 6.2.1 内置模块 6.2.1.1 random 随机数模块:得到一个随机数,起始值和终止值都可取到 import random # 导入一个模块 v = random.randint(起始,终止) # 得到一个随机数 ​ #示例:生成随机验证码 import random def get_random_code(length=6): data = [] for i in range(length): v = random.randint(65,90) data.append(chr(v)) return ''.join(data) ​ code = get_random_code() print(code) View

python 面向对象之继承

我是研究僧i 提交于 2019-11-29 13:56:06
继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 基类 或 超类 ,新建的类称为 派生类 或 子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass 提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如 __str__ )的实现 >>> ParentClass1.__bases__ (<class 'object'>,) >>> ParentClass2.__bases__ (<class 'object'>,) 抽象与继承(先抽象再继承) 抽象即抽取类似或者说比较像的部分。 抽象分成两个层次: 将奥巴马和梅西这俩对象比较像的部分抽取成类; 将人,猪,狗这三个类比较像的部分抽取成父类。 抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度) 继承

Python语法基础

半腔热情 提交于 2019-11-29 13:25:57
主要来源: 菜鸟Python教程 Python 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于 PHP 和 Perl 语言。 Python 是交互式语言: 这意味着,您可以在一个 Python 提示符,直接互动执行写你的程序。 Python 是面向对象语言 : 这意味着 Python 支持面向对象的风格或代码封装在对象的编程技术。 Python 是初学者的语言: Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。 Python 特点 1.易于学习: Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。 2.易于阅读: Python代码定义的更清晰。 3.易于维护: Python的成功在于它的源代码是相当容易维护的。 4.一个广泛的标准库: Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。 5.互动模式: 互动模式的支持,您可以从终端输入执行代码并获得结果的语言

python 基本排序算法

允我心安 提交于 2019-11-29 12:05:44
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/6/24 下午7:54 # @Author : lb # @File : test.py import numpy as np arr = np.random.randint(1000, size=1000) print type(arr) # 冒泡排序 def buble_sort(arr): return for i in xrange(len(arr)): for j in xrange(len(arr)-i-1): if arr[j] > arr[j+1]: tmp = arr[j+1] arr[j+1] = arr[j] arr[j] = tmp return arr # 选择排序 def sel_sort(arr): for i in xrange(0, len(arr)): min = arr[i] pos = i for j in xrange(i, len(arr)): if arr[j] < min: pos = j min = arr[j] if pos != i: tmp = arr[pos] arr[pos] = arr[i] arr[i] = tmp return arr # 插入排序 def insert_sort(arr): if

python调用scikit-learn机器学习

天涯浪子 提交于 2019-11-29 11:20:05
不支持深度学习和强化学习 numpy介绍: np.eye(n)生成一个n维单元数组 数据预处理: iris数据加载 from sklearn import datasets iris = datasets.load_iris() 数据展示 显示iris的信息 print(iris.data) [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] …… [5. 3.6 1.4 0.2] [5.4 3.9 1.7 0.4] [4.6 3.4 1.4 0.3]] 每列数据表示不同样本同一属性下对用的数值 print(iris.feature_names) ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] 输出目标结果 print(iris.target) [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

大数据处理需要用到的九种编程语言

痞子三分冷 提交于 2019-11-29 10:28:27
随着大数据的热潮不断升温,几乎各个领域都有洪水倾泻般的信息涌来,面对用户成千上万的浏览记录、记录行为数据,如果就单纯的Excel来进行数据处理是远远不能满足的。但如果只用一些操作软件来分析,而不怎么如何用逻辑数据来分析的话,那也只是简单的数据处理。 替代性很高的工作,而无法深入规划策略的核心。 当然,基本功是最不可忽略的环节,想要成为数据科学家,对于这几个程序你应该要有一定的认识: 如果你对大数据开发感兴趣,想系统学习大数据的话,可以加入大数据技术学习交流扣群:数字522+数字189+307,私信管理员即可免费领取开发工具以及入门学习资料 R 若要列出所有程序语言,你能忘记其他的没关系,但最不能忘的就是R。从1997年悄悄地出现,最大的优势就是它免费,为昂贵的统计软件像是Matlab或SAS的另一种选择。 但是在过去几年来,它的身价大翻转,变成了资料科学界眼中的宝。不只是木讷的统计学家熟知它,包括WallStreet交易员、生物学家,以及硅谷开发者,他们都相当熟悉R。多元化的公司像是Google、Facebook、美国银行以及NewYorkTimes通通都使用R,它的商业效用持续提高。 R的好处在于它简单易上手,透过R,你可以从复杂的数据集中筛选你要的数据,从复杂的模型函数中操作数据,建立井然有序的图表来呈现数字,这些都只需要几行程序代码就可以了,打个比方