python算法

流畅的Python——切片

两盒软妹~` 提交于 2020-03-16 08:04:43
2.4 切片 在 Python 里,像列表(list)、元组(tuple)和字符串(str)这类序列类型都支持切片操作,但是实际上切片操作比人们所想象的要强大很多。 在我个人的使用经历来看,在算法实践中切片用的还以比较多的。 首先我们先来简单的温习一下切片的使用。 一、 Python可切片对象的索引方式 包括:正索引和负索引两部分,如下图所示,以a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例: 二、 Python切片操作的一般方式 一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index、end_index、step),当只有一个“:”时,默认第三个参数step=1。 切片操作基本表达式:object[start_index:end_index:step] step:正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以增量1取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情说三遍! start_index:表示起始索引(包含该索引本身);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点”开始

python day 1--python初始

可紊 提交于 2020-03-16 03:53:08
笔者:QQ: 360212316 Python初识 Python的创始人为Guido van Rossum。1989年圣诞节期间,在 阿姆斯特丹 ,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。 python的应用领域 1、云计算 : 云计算最火的语言, 典型应用OpenStack 2、WEB开发 : 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django 3、科学运算、人工智能 : 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas 4、系统运维 : 运维人员必备语言 5、金融 :量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测 6、图形GUI : PyQT, WxPython,TkInter python的优点 1、优雅、明确、简单 2、开发效率高:python有非常强大的第三方库 3、高级语言:当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节 4、可移植性

01.Python安装与初识

放肆的年华 提交于 2020-03-16 03:49:29
1.python开发概要 一、Linux基础    计算机以及日后我们开发的程序放置的服务器的简单操作 二、Python开发   a. Python基础    b. 网络编程   c. WEB框架 --用于写网站   d. 设计模式 + 算法   e. 项目阶段 2.编程语言介绍 一、开发语言:   高级语言:Python Java、PHP C# Go ruby C++… → 字节码   低级语言:C、汇编 → 机器码 二、语言之间的对比:    PHP类:适用于写网页,局限性    Python Java: 及可以写网页 也可以写后台功能    - Python执行效率低,开发效率高    - Java执行效率高, 开发效率低 3.Python种类介绍 一、Python种类:        JPython    IronPython    JavaScriptPython    RubyPython    CPython **********    ...    pypy 这是用CPython开发的Python 4.Python安装及环境变量 一、安装:   Python安装在OS上,   执行操作:写一个文件文件中按照python的规则写,将文件交给Python软件,读取文件中的内容,然后进行转换和执行,最终获取结果。   Python软件 ==> Python解释器(内存管理

Python数据结构与算法分析(笔记与部分作业)

与世无争的帅哥 提交于 2020-03-16 03:40:50
最近为了给写搬砖脚本增加一些算法知识,脑残的看起来算法书。Python数据结构与算法分析,本人英语比较差,看的是翻译版本的。 网上有免费的原版的:https://runestone.academy/runestone/books/published/pythonds/index.html 不废话,开笔记,第一章Python基础,最后的反向思路就稍微卡住了我一下。 第1章,导论 计算机科学的研究对象是问题、解决问题的过程,以及通过该过程得到的解决方案。算法就是解决方案。 计算机科学可以定义为:研究问题及其解决方案,以及研究目前无解的问题的科学。 编程是指通过编程语言将算法编码以使其能被计算机执行的过程。如果没有算法,就不会有程序。 Python支持面向对象编程范式。这意味着Python认为数据是问题解决过程中的关键点。在Python以及其他所有面向对象编程语言中,类都是对数据的构成(状态)以及 数据能做什么(行为)的描述。由于类的使用者只能看到数据项的状态和行为,因此类与抽象数据类型相似的。 在面向对象编程范式中,数据项被称为对象。一个对象就是类的一个实例。 上两个书中的完整代码: def gcd(m,n): while m%n != 0: oldm = m oldn = n m = oldn n = oldm%oldn return n class Fraction: def _

日月累积的整理!140种Python标准库、第三方库和外部工具都有了

拥有回忆 提交于 2020-03-14 23:58:53
Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库、函数和外部工具。其中既有Python内置函数和标准库,又有第三方库和工具。 读者福利,想要了解python人工智能可直接点击链接即可领取相关学习福利包: 石墨文档 是安全网站放心,继续访问就可以领取了哦 这些库可用于文件读写、网络抓取和解析、数据连接、数清洗转换、数据计算和统计分析、图像和视频处理、音频处理、数据挖掘/机器学习/深度学习、数据可视化、交互学习和集成开发以及其他Python协同数据工作工具。 为了区分不同对象的来源和类型,本文将在描述中通过以下方法进行标识: Python内置函数: Python自带的内置函数。函数无需导入,直接使用。例如要计算-3.2的绝对值,直接使用abs函数,方法是 abs(-3.2) Python标准库:Python自带的标准库。Python标准库无需安装,只需要先通过import方法导入便可使用其中的方法。例如导入string模块,然后使用其中的find方法: importstringstring.find('abcde','b') 第三方库:Python的第三方库。这些库需要先进行安装(部分可能需要配置)。 外部工具:非Python写成的库或包,用于Python数据工作的相关工具。 「推荐度」3星最高,1星最低。 01 文件读写 文件的读写包括常见的txt、Excel

[Python笔记]第八篇:模块

北城以北 提交于 2020-03-13 14:36:59
本篇主要内容:python常用模块用法介绍 什么是模块   模块,用一大段代码实现了某个功能的代码集合。   类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。 如:os 是系统相关的模块;file是文件操作相关的模块 模块分类: 自定义模块 开源模块 内置模块 模块导入 则可以采用这几种方式导入模块,这些方法通用于导入自定义模块/开源模块/内置模块 import module from module.xx.xx import xx from module.xx.xx import xx as rename from module.xx.xx import * 模块导入举例   下面介绍如何导入一个自定义模块:   如图所示下面这个名为"cnblogs"的项目里面有一个文件夹叫做"libs"和一个叫做"index"的py文件 假如有个叫index.py的主程序,需要调用libs文件夹里面的功能的话,那么他就要在主程序里import libs里面存在的各个功能模块 from libs import db from libs import storage    #!/usr/bin/env

python排序算法总结和实现

风流意气都作罢 提交于 2020-03-12 11:46:30
------------------希尔排序------------- 一直没搞懂希尔排序怎么搞得 def Shell_sort(L): step = len(L)/2 while step > 0: for i in range(step,len(L)): #在索引为step到len(L)上,比较L[i]和L[i-step]的大小 while(i >= step and L[i] < L[i-step]): #这里可以调整step从小到大或者从大到小排列 L[i],L[i-step] = L[i-step],L[i] i -= step step /= 2 print L Shell_sort(L) ------------------插入排序------------- 一个有序数列,一个无序数列,遍历无序数列,把数据插入到有序数列的相应位置 def insertion_sort(A): length=len(A) for i in range(1,length): key=A[i] j=i-1 while j>0 and A[j]>key: A[j+1]=A[j] j=j-1 A[j+1]=key return A ------------------冒泡排序------------- 比较相邻的两个元素,保证每次遍历到最后的元素是最大的 def bubble_sort(A):

Python基础简介与简单使用

纵饮孤独 提交于 2020-03-12 04:55:46
Python介绍 Python发展史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s FlyingCircus。 他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。 Granddaddy of Python web frameworks, Zope 1 was released in 1999 Python 1.0 - January 1994 增加了 lambda, map, filter and reduce. Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础 Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生 Python 2.5 - September 19, 2006 Python 2.6 - October 1, 2008 Python 2.7 - July 3, 2010 In

python数据结构与算法基础名词积累

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-12 01:47:23
记录: 算法,很早之前,我就知道是特别重要一环;但是,今天,看到一个简单例子,第一次被震撼了。 算法: 算法是独立存在的一种解决问题的方法和思想。 算法五大特性: 输入: 算法具有0个或多个输入 输出: 算法至少有1个或多个输出 有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成 确定性:算法中的每一步都有确定的含义,不会出现二义性 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成 大O记法: 对于单调的整数函数f,如果存在一个整数函数g和实常数c>0,使得对于充分大的n总有f(n)<=c*g(n),就说函数g是f的一个渐近函数(忽略常数),记为f(n)=O(g(n))。也就是说,在趋向无穷的极限意义下,函数f的增长速度受到函数g的约束,亦即函数f与函数g的特征相似。 时间复杂度: 假设存在函数g,使得算法A处理规模为n的问题示例所用时间为T(n)=O(g(n)),则称O(g(n))为算法A的渐近时间复杂度,简称时间复杂度,记为T(n)。 时间复杂度排序: 最优时间复杂度: 算法完成工作最少需要多少基本操作。 最坏时间复杂度: 算法完成工作最多需要多少基本操作。 平均时间复杂度: 算法完成工作平均需要多少基本操作。 时间复杂度的几条基本计算规则: 1.基本操作,即只有常数项,认为其时间复杂度为O(1)。 2.顺序结构

Python的排序算法

删除回忆录丶 提交于 2020-03-11 14:55:41
1.快速排序 import time def cal_time ( func ) : def inner ( * args , ** kwargs ) : time1 = time . time ( ) func ( * args , ** kwargs ) time2 = time . time ( ) print ( 'this is consume %s miao' % ( time2 - time1 ) ) return inner def paration ( li , left , right ) : tmp = li [ left ] while left < right : while left < right and li [ right ] >= tmp : right -= 1 li [ left ] = li [ right ] while left < right and li [ left ] <= tmp : left += 1 li [ right ] = li [ left ] li [ left ] = tmp return left def _quick_sort ( li , left , right ) : if left < right : mid = paration ( li , left , right ) _quick_sort