Python
Liu610921
这个作者很懒,什么都没留下…
展开
-
python算法与数据结构013--二叉树的实现及按先序,后序,中序遍历的递归实现
二叉树的深度优先遍历: (可以用递归或者堆栈实现)先序:根节点->左子树->右子树 中序: 左子树->根节点->右子树 后序:左子树->右子树->根节点二叉树按广度优先遍历:从上到下,从左到右遍历按层次遍历(利用队列实现)class Node(object): """树的节点类""" def __init__(self,data=..原创 2018-09-15 12:35:13 · 192 阅读 · 0 评论 -
python算法与数据结构006--双向链表的实现
双向链表:每个节点有三个单元,previous,data,next。previous指向前驱元素,next指向后继元素,在整个列表中,只有列表头没有前驱,最后一个元素没有后继。class Node(object): """Node节点,previous指向前驱元素,next指向后继元素。 表头无前驱,表尾无后继""" def __init__(self,da...原创 2018-08-28 22:57:21 · 134 阅读 · 0 评论 -
python算法与数据结构005--单向循环链表的实现
class Node(object): """链表节点""" def __init__(self,data,next=None): self.data = data self.next = nextclass SingleCycleList(object): """单向循环链表""" def __init__(sel原创 2018-08-26 00:13:59 · 238 阅读 · 0 评论 -
python算法与数据结构004--单向链表的实现
单向链表:每一个节点保存自己的数据和一个next变量指向下一个节点。链表本身只需要存取表头即可。class Node(object): """链表节点""" def __init__(self,data,next=None): self.data = data self.next = nextclass SingleLinkedList...原创 2018-08-25 21:09:19 · 164 阅读 · 0 评论 -
python基础拾遗007--python语言的动态特性
python语言的动态性主要体现在: **可是给实例添加属性 **可以给实例添加方法 **可以给类添加属性 **可以给类添加类方法或者静态方法先定义一个简单的测试类class Person(object): def __init__(self,name,age): self.name=name self...原创 2018-08-24 19:09:38 · 124 阅读 · 0 评论 -
python基础拾遗006--装饰器
python里的函数装饰器是利用闭包实现的,实现了对函数功能的补充。def deco(func): def wrapper(): print("---开始装饰函数--") func() print("---结束函数装饰") return wrapper@decodef sayHello(): print("Say ...原创 2018-08-24 17:33:17 · 142 阅读 · 0 评论 -
python算法与数据结构007--冒泡排序
冒泡排序:重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们的顺序交换过来。最优的时间复杂度:O(n)最坏的时间复杂度:O(n²)是稳定排序#冒泡排序:重复的遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们的顺序交换过来。def bubbleSort1(data): #按升序排列列表里的数据 data = list(data) ...原创 2018-08-28 22:55:40 · 197 阅读 · 0 评论 -
python基础拾遗005--闭包
理解闭包之前,先要理解函数引用。在python里面,函数名可以作为函数引用指向函数体。def test_func(): print('say hello')test_func() #调用函数print(test_func) #输出函数test_func的引用b= test_func #将函数引用复制给变量bb()#等价于调用test_func()闭包:内部函数引用外部...原创 2018-08-24 11:30:07 · 132 阅读 · 0 评论 -
python算法与数据结构001--python内置性能分析模块timeit
python内置的计时器模块timeit,能准确的测量小段代码的执行时间。timeit.timeit(stmt='pass',setup='pass',timer=<default timer>,number=1000000)import timeit#python的计时器模块:timeit'''timeit.timeit(stmt='pass', setup='pa...原创 2018-09-03 16:15:01 · 171 阅读 · 0 评论 -
python算法与数据结构002--利用列表实现栈的功能
class Statck(object): """ 栈:后进先出的数据结构 利用列表实现栈的基本功能。 """ def __init__(self): self.items=[] def push(self,item): """添加新的元素到栈顶""" self.ite原创 2018-09-03 16:14:52 · 187 阅读 · 0 评论 -
python基础拾遗008--python垃圾回收机制
1.小整数[-5.257)、单个单词、单个字符公用对象。大整数,含空格的字符串不公用内存,引用计数为0,对象被销毁。>>> a = 999>>> b=999>>> a is bFalse>>> a=20>>> b=20>>> a is bT原创 2018-09-13 11:08:33 · 135 阅读 · 0 评论 -
python算法与数据结构013--二分查找的实现
最优时间复杂度: O(1)最坏时间复杂度: O(logn)递归实现:#利用递归实现的二分查找def binarySearch(dataList,data,start,end): #在dataList的start,end之间查找数据data的坐标 print("查找范围:---" + str(start) + ":" + str(end)) if start...原创 2018-09-03 17:49:57 · 154 阅读 · 0 评论 -
python算法与数据结构012--归并排序
归并排序:是采用分治法的典型应用,基本思想是将序列分解成最小,再排序并且合并,依次递归。最优时间复杂度:O(nlogn)最坏时间复杂度:O(nlogn)是稳定排序def mergeSort(dataList): #递归出口 if len(dataList)<=1: return dataList #先分解 length = ...原创 2018-09-03 16:09:18 · 171 阅读 · 0 评论 -
python算法与数据结构011--希尔排序
希尔排序:是插入排序的一种改进版,通过不同的步长,将序列分组,并对每组元素进行插入排序,直到最后步长为1,整个序列排序完成。最优时间复杂度:根据步长不同而不同最坏时间复杂度:O(n²)是不稳定排序,插入排序是稳定的,但是由于希尔排序按照步长对数据分组,有可能相同的数据在不同的组当中顺序会被交换。def shellSort(dataList): #按照升序排序 #...原创 2018-09-03 16:14:21 · 152 阅读 · 0 评论 -
python算法与数据结构010--快速排序
快速排序:又称划分交换排序,在数列中找到一个基准,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,依次类推,完成所有数据的排序。最优的时间复杂度:O(nlogn)最坏的时间复杂度:O(n²)是不稳定排序""" 快速排序:在数列中找到一个基准,通过一趟排序将要排序的数据分割成独立...原创 2018-09-03 16:14:05 · 153 阅读 · 0 评论 -
python算法与数据结构009--插入排序
插入排序:通过构建有序序列,对于未排序数据,在已排序序列中,从后向前扫描,找到正确位置插入。最优时间复杂度: O(n)最坏的时间复杂度:O(n²)是稳定排序def insert_select1(data): #插入排序,主要实现原理是构建有序序列。 #本例按升序排列 #新建一个空列表用于存储临时有序序列 data = list(data) ...原创 2018-09-03 16:13:54 · 141 阅读 · 0 评论 -
python算法与数据结构008--选择排序
选择排序:在未排序的序列中,找到最大(最小)的数,与第一个位置的数交换。下次从序列的第二个位置开始,找到最大(最小)的元素,与第二个位置的元素交换。依次类推,得到所有的排序。它的特点是,每次交换数据,至少有一个数放在了争取的位置上。最优的时间复杂度:O(n²)最坏的时间复杂度:O(n²)是不稳定排序def select_sort(data): data = list(da...原创 2018-09-03 02:06:28 · 131 阅读 · 0 评论 -
python算法与数据结构003--利用列表实现队列的功能
class Queue(object): """ 队列:先进先出的数据结构 列用列表实现队列的基本功能 """ def __init__(self): #用列表存储队列的数据 self.items=[] def enQueue(self,item): #尾部插入数据 ...原创 2018-09-03 16:14:45 · 364 阅读 · 0 评论 -
python基础拾遗004--迭代器,生成器
迭代器可迭代对象: 字符串 元组 列表 字典 生成器和带yield的生成器函数。如何判读对象是否可迭代:isinstance(对象,Iterable)如何判读对象是否是迭代器:isinstance(对象,Iterator)如何生成可迭代对象的迭代器:iter(可迭代对象)注意:可迭代对象不一定是迭代器,但是迭代器一定是可迭代对象。from collections impo...原创 2018-08-24 10:01:23 · 136 阅读 · 0 评论 -
python基础拾遗003--私有化的实现
xx: 公有化变量_x:前面带一个下划线,只是标明是私有属性或者方法,对访问没有影响。__x:避免与子类的属性命名冲突,无法在外部直接访问。(名字被重整成 _className__x)注意:无法再外部直接访问,但是外部可以创建同名的变量。如下。这是新建的变量只属于该示例。class Test(object): def __init__(self): sel...原创 2018-08-23 17:00:08 · 161 阅读 · 0 评论 -
Python学习笔记(基础篇)_008_函数
函数的定义 def functionName():显示注释文档 help(functionName) 关键字参数:按关键字名称赋值调用函数 参数默认值: 定义函数是,可以给参数一个默认值。调用的时候若是没有赋值参数会取默认值。注意:带默认值得参数必须放在不带默认值参数的后面。 收集参数:就是参数的个数不定。只需要在参数名前面加上*号就可以了。所有传入的实参将被组装到一个元组里面处理。 函数的返回值...原创 2017-04-11 10:22:08 · 224 阅读 · 0 评论 -
Python学习笔记(基础篇)_009_嵌套函数
Python支持函数的嵌套:(如下)需要注意的地方:内部函数的作用域是外部函数内。出了外部函数就不能调用内部函数。 闭包: 调用外部函数返回的是内部函数。那么返回的函数就叫做闭包。 内部函数访问外部函数的变量:相对于内部函数而言,外部函数的变量就像全局变量。可以访问但是不能直接修改。如果要修改的话,需要用到关键字nonlocal。 ...原创 2017-04-11 10:22:16 · 304 阅读 · 0 评论 -
Python学习笔记(基础篇)_010_lambda表达式
lambda表达式主要是用来创建匿名函数:lambda x,y: x+y // 分号左边的是参数,多参数可以用逗号隔开。右边是返回的结果。 实例:1.过滤列表里的基数。 大小: 1.1 KB 大小: 1.7 KB 查看图片附件 ...原创 2017-04-11 10:22:26 · 372 阅读 · 0 评论 -
Python学习笔记(基础篇)_011_字典
字典是Python里的唯一映射类型。用大括号声明。dic1={key1:value1,key2:value2} 空字典: dic2={} 用dic工厂函数构造字典:工厂方法 dict()用关键字方法,关键字 AA BB CC不能加引号。创建键值对序列构造字典。fromKeys():创建新的字典,对原字典没有改变。 keys() values() items(): clear(): 清空字典 upd...原创 2017-04-11 10:22:35 · 225 阅读 · 0 评论 -
Python学习笔记(基础篇)_012_集合
python里面集合也是用一组大括号定义。dic={} //表示的是字典dic={'A','B','C'} //当大括号里的一组数据并没有体现键值映射关系的时候,python会智能地判断它为字典。并且字典是无序的。 判断集合中是否存在某个元素用 in / not in: 添加元素:add()删除元素:remove() 不可变集合:frozenset() ...原创 2017-04-11 10:22:44 · 219 阅读 · 0 评论 -
Python学习笔记(基础篇)_013_pickle模块
Python的Pickle模块就是将python里的数据对象持久化到文件中。并且也提供了读取数据的接口。方便将数据与代码分离。pickle模块的常用接口:dump(): 将数据序列化保存到文件中load():反序列话化读取文件中的数据 //序列化数据。open文件的时候mode一定要是wb模式,即写入二进制数据。 //反序列化:即从二进制文件中读取Python对象。open文件的模式是 ‘rb’,...原创 2017-04-11 10:22:57 · 261 阅读 · 0 评论 -
Python学习笔记(基础篇)_014_GUI模块 easygui的使用
如何导入easygui模块:1.下载本文附件:2016_First_Updates.zip 解压到任意目录。我是解压到了D:\python\easygui 也可以自己到网上下载最新的资源,但是一定要注意保证安装的python版本和easygui的版本是不是兼容的。版本不对的话可能是会出问题的。这里用的版本在python3.4下是没问题的。 命令行: cd/d easygui的解压目录 ...原创 2017-04-11 10:23:15 · 909 阅读 · 0 评论 -
Django开发环境配置(Ubuntu16.0.4 + python 2.7 + Django 1.8.7 +Sublime2)
之前一直是linux和python小白,所以得从准备环境开始。 1. 安装VMWare Workstation,我用的是9.0的版本。 2. 在VMWare上安装Linux操作系统。在网上搜了一圈,好像Ubuntu还不错,我下载的是Ubuntu16.0.4版本。(参考文章: VMware Workstation12安装Ubuntu 16.04.... 3.确认Python版本。Ub...原创 2018-03-08 09:55:36 · 226 阅读 · 0 评论 -
Python学习笔记(基础篇)_007_字符串的各种变态方法
1.字符串的切片2.索引a='Hello World'a[1] => 'e' 3.capitalize() :将字符串的第一个字符变成大写 4.casefold() :将字符串全部变为小写 5.center():字符串按某个长度居中,不够的填充空格 6.count():字符串中某个子串在某段位置中出现的次数 7.endswith():在某段子串中是否已某个指定的字符串结束 8.expandt...原创 2017-04-11 10:22:00 · 239 阅读 · 0 评论 -
Python学习笔记(基础篇)_006_元组
元组和列表有很多用法类似。最大的区别之一就是元组的数据是不能改变的。有点类似Java里的String类型。 创建元组:一般情况下,我们是用小括号来创建的。但是要注意:a=(2) //不是元组,是一个int类型的数字。a=(2,) //加上逗号才是元组a=(1,2,3,3) //正常的元组a=1,2,3,4 //也是元组,不过这个定义有点奇怪。最好不要用。a=() //空元组 元组的乘法: (8) ...原创 2017-04-11 10:21:53 · 188 阅读 · 0 评论 -
python基础拾遗002--深拷贝和浅拷贝
在比较深拷贝和浅拷贝之前,要先理解python的可变类型的变量和不可变类型的变量。python中数字,字符串,元组就是典型的不可变类型的变量。对于不可变类型的变量,改变它们的值其实就是在内存中新建了一个变量。如:>>> a=120;b="ACS";c=(11,22,23);print(id(a),id(b),id(c))10923232 140086869042264...原创 2018-08-22 23:33:08 · 114 阅读 · 0 评论 -
python基础拾遗001-- 模块的导入和==与is的区别
模块导入查看模块导入的查找顺序: import sys; sys.path添加搜索路径: sys.path.append("/pathname")重新加载某个模块: from imp import *; reload(模块名) 循环导入问题:模块之间相互引用,导致引用失败的问题。 ==和is: ==表示值相等,is表示变量指向的引用是同一个。注意整形数字在一定范围内==...原创 2018-08-22 16:39:56 · 114 阅读 · 0 评论 -
Python学习笔记(基础篇)_001_字符串转义
python的转移符用的是‘\’,话不多说看代码:(一般的特殊字符否可以有斜杠转义。) 如果觉得用斜杠太麻烦,比如文件路径太长,要加那么多斜杠也很累。就可以使用python的原始字符串格式。在普通字符串的赋值前面加上英文字母'r'即可。如下: 另外,python还支持定义一个站多行的字符串。其实我们主要是讲它用于python的多行注释。 ...原创 2017-04-11 10:21:04 · 871 阅读 · 0 评论 -
Python学习笔记(基础篇)_002_类型转换
1. True和False不仅是布尔类型的变量,也可以作为整型数据参与计算。(呵呵~~这种用法很奇怪,我们知道就好哈。真在程序里面这样写,估计是要被老大骂嗒) 2. 各类型之间的转换用 int(), float(), str()函数即可。 3. 判断Python里的变量是什么类型可以用函数 type() 和isinstance()。官方文档是建议使用isinstance()函数。type():直接...原创 2017-04-11 10:21:13 · 236 阅读 · 0 评论 -
Python学习笔记(基础篇)_003_运算符
python 的常用运算符除了我们熟知的 + - * / % 还有 // 和 ** (Python 3) python的一些简介用法:1. += , -=, *= , /=2. 复制的时候可以按这种格式写: a=b=c=d=j=113. Python的除法在python3之后有所改变,返回的不再是整数而是浮点数。 4. 两个反斜杠表示取整除法。但如果有浮点型数据参与运算还是会返回浮点数的。 5....原创 2017-04-11 10:21:22 · 204 阅读 · 0 评论 -
Python学习笔记(基础篇)_004_操作符
1. 三元操作符:格式和Java很不一样格式:变量1 条件判断 变量2 (如果满足条件判断返回变量1,否则返回变量2) small = x if x<y else y, 返回x,y中较小的一个。 2. Assert (断言):assert后面的条件若是不满足,程序将崩溃。 大小: 3.8 KB ...原创 2017-04-11 10:21:30 · 237 阅读 · 0 评论 -
Python学习笔记(基础篇)_005_列表
列表的定义:a=['aa',2,True,[1,2,3],{11,22,33}] //python列表可以放任何类型的数据a=[] //定义空列表 向列表中添加元素:append(): 在列表的末尾处添加一个元素extend(): 在列表的末尾拼接新的列表的所有元素insert(index,v...原创 2017-04-11 10:21:42 · 183 阅读 · 0 评论 -
第一个Django的Hello World实例
Django安装完成之后,来开始第一个HelloWorld的实例吧。1. 新建一个Django项目。 在桌面创建一个项目目录,py_Django_project 。然后cd到这个目录,执行命令: django-admin startproject HelloWorld 命令执行之后不会有提示,可以在当前目录下tree一下,查看目录结构是否改变。2. 在当前项目中新建一个App应用。 ...原创 2018-03-08 11:16:14 · 2142 阅读 · 0 评论