本文以实例形式展示了Python算法中栈(stack)的实现,对于学习数据结构域算法有一定的参考借鉴价值。具体内容如下:1.栈stack通常的操作:Stack()建立一个空的栈对象push()把一个元素添加到栈的最顶层pop()删除栈最顶层的元素,并返回这个元素peek()返回最顶层的元素,并不删除它isEmpty()判断栈是否为空size()返回栈中元素的个数2.简单案例以及操作结果:StackOperationStackContentsReturnVa
系统 2019-09-27 17:38:32 1498
一、什么是递归如果函数包含了对其自身的调用,该函数就是递归的。递归做为一种算法在程序设计语言中广泛应用,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。例如,要计算1-9的9位数字的乘积,直观的算法是1*2*3*4*5*6*7*8*9,如果要计算1-10000的乘积,直观的算法就难于实现出,而递归就可以很简单的实现。请看示例:deffact(
系统 2019-09-27 17:38:31 1498
如果直接对大文件对象调用read()方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。即通过yield。在用Python读一个两个多G的txt文本时,天真的直接用readlines方法,结果一运行内存就崩了。还好同事点拨了下,用yield方法,测试了下果然毫无压力。咎其原因,原来是readlines是把文本内容全部放于内存中,而yield则是类似于生成器。代码如下:defopen_txt(file_name):withope
系统 2019-09-27 17:38:24 1498
列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。排序,数字、字符串按照ASCII,中文按照unicode从小到大排序x=[4,6,2,1,7,9]x.sort()print(x)#[1,2,4,6,7,9]如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢?x=[4,6,2,1,7,9]y=x[:]y.sort()print(y)#[1,2,4,6,7,9]print(x)#[4,
系统 2019-09-27 17:38:09 1498
Python内建排序机制很强大,此处对其进行一个较为系统的使用总结。1.排序方法介绍Python中有2个排序函数,一个是list内置的sort()方法,另一个是全局的sorted()方法sorted(iterable,key=None,reverse=False)#返回排好序的新列表,不改变对象本身,默认升序;reverse:-True降序-False正序对所有可迭代的对象均有效list.sort(key=None,reverse=False)#将list
系统 2019-09-27 17:56:11 1497
1、概述1.1场景我们在使用Python中的方法method时,经常会看到参数中带有self,但是我们也没对这个参数进行赋值,那么这个参数到底是啥意思呢?2、知识点2.1成员函数(m)和普通方法(f)Python中的"类方法"必须有一个额外的第一个参数名称(名称任意,不过推荐self),而"普通方法"则不需要。m、f、c都是代码自动提示时的左边字母(method、function、class)#-*-coding:utf-8-*-classTest(obj
系统 2019-09-27 17:56:05 1497
上一章中已经讲到连接两个字符串的一种方法。复习一下:复制代码代码如下:>>>a='py'>>>b='thon'>>>a+b'python'既然这是一种方法,言外之意,还有另外一种方法。连接字符串的方法2在说方法2之前,先说明一下什么是占位符,此前在讲解变量(参数)的时候,提到了占位符,这里对占位符做一个比较严格的定义:来自百度百科的定义:顾名思义,占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号。根据这个定义,在python里面规定了一些占位符
系统 2019-09-27 17:56:04 1497
首先理解Python的函数能像普通的对象一样能作为参数传递给其他函数,可以被赋值给其他变量,可以作为返回值,可以被定义在另外一个函数内。前面的文章已经对闭包做了介绍,再次进行延伸和理解一下装饰器,主要用于不在改变源代码的情况下进行添加功能,装饰器利用闭包来实现,一般和闭包一起使用。装饰器返回一个函数对象,简单理解在原函数功能上又加入新功能并返回一个和原函数名相同的函数对象。deffuncout(func):deffuncIn(x,y):func(x,y)#
系统 2019-09-27 17:55:41 1497
上一篇:计算机二级Python学习笔记(一)其实昨天Python并没有安装成功,打开就报错:于是今天先解决这个问题,搜了一下api-ms-win-crt-process-1-1-0.dll丢失,感谢这位老铁的博客解决了我的问题【api-ms-win-crt-process-l1-1-0.dll丢失的处理,个人觉得完美】,分享给大家,如果因为系统丢失dll文件报错可以借鉴一下。完美运行,继续学习。第2章Python语言基本语法元素2.1程序的格式框架缩进:T
系统 2019-09-27 17:55:20 1497
前言玩ctf经常遇到进制转换的问题,就正好做一个进制转换总结,分享出来供大家参考学习,下面来一起看看详细的介绍:字符串与十六进制转换例如百度ctf12月的第二场第一个misc666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D比较简单的一种做法就是直接调用字符串的.decode('hex')解密即可,但如果不用这个函数你会怎么解呢?一种思路就
系统 2019-09-27 17:55:09 1497
当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用*来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用deff(*args):#直接打印元组参数print(args)print('-'*20)#循环打印元组参数[print(i)foriinargs]...#传递一个参数f(1)print('='*20)#传递5个参数f(1,2,3,4,5)示例结果:(1,)----------
系统 2019-09-27 17:55:07 1497
当我们在写程序的时候,我们需要通过测试来验证程序是否出错或者存在问题,但是,编写大量的测试来确保程序的每个细节都没问题会显得很繁琐。在Python中,我们可以借助一些标准模块来帮助我们自动完成测试过程,比如:unittest:一个通用的测试框架;doctest:一个更简单的模块,是为检查文档而设计的,但也非常适合用来编写单元测试。下面,笔者将会简单介绍这两个模块在测试中的应用。doctestdoctest模块会搜索那些看起来像是python交互式会话中的代
系统 2019-09-27 17:55:04 1497
逗号代码假定有下面这样的列表:spam=['apples','bananas','tofu','cats']编写一个函数,它以一个列表值作为参数,返回一个字符串。该字符串包含所有表项,表项之间以逗号和空格分隔,并在最后一个表项之前插入and。例如,将前面的spam列表传递给函数,将返回'apples,bananas,tofu,andcats'。但是你的函数应该能够传递给它的任何列表。代码如下:importcopydefconFun(nameList):n=
系统 2019-09-27 17:55:01 1497
主要逻辑是判断文件的最后修改时间与创建时间是否在秒级别上一致,此代码适用于Python2.importtimeimportos#ReadfimenameFileName='D:/scapegoat/xx.csv'#printfilecreationtimeprinttime.strftime('%Y-%m-%d%H:%M:%S',time.localtime(os.stat(FileName).st_ctime))#printfilemodifiedtim
系统 2019-09-27 17:54:41 1497
python中random的常用方法总结一、random常用模块1.random.random()随机生成一个小数print(random.random())#输出0.60605621179967842.random.randint(m,n)随机生成一个m到n的整数(包括n)print(random.randint(1,5))#输出53.random.randrange(m,n)随机生成m到n中的一个数,包括m但是不包括nprint(random.rand
系统 2019-09-27 17:54:35 1497