Python 的更多的方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Python的列表数据类型包含更多的方法list.append(x)把一个元素添加到列表的结尾。list.extend(L)将一个给定列表中的所有元素都添加到另一个列表中。list.insert(i,x)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如a.insert(0,x)会插入到整个列表之前,而a.insert(len(a),x)相当于a.append(x)。list.remove(x)删除列表中值为x的第一个元素。如果没有这样的元素,就会返回一个错误。list.pop([i])从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从链表中被删除。(方法中i两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,这个经常会在Python库参考手册中遇到这样的标记。)list.index(x)返回列表中第一个值为x的元素的索引。如果没有匹配的元素就会返回一个错误。list.count(x)返回x在链表中出现的次数。list.sort(cmp=None,key=None,reverse=False)对列表中的元素进行排序(参数可以用来自定义排序方法,参考sorted()的更详细的解释)。list.reverse()就地倒排链表中的元素dellist[i]有个方法可以从列表中按给定的索引而不是值来删除一个子项:del语句。它不同于有返回值的pop()方法。语句del还可以从列表中删除切片或清空整个列表(我们以前介绍过一个方法是将空列表赋值给列表的切片)。dict()构造函数可以直接从key-value对中创建字典:dict([('sape',4139),('guido',4127),('jack',4098)])dict.fromkeys(['a','b'],0)dict(zip(['a','b','c'],[1,2,3])){k:vfor(k,v)inzip(['a','b','c'],[1,2,3])}{x:x**2forxin(2,4,6)}D=dict(a=1,b=2,c=3){c:c*4forcin['JoinQuant']}{c.lower():c*4+'!'forcin'JoinQuant'}元组任意无符号的对象,以逗号隔开,默认为元组(print'abc',-4.24e93,18+6.6j,'xyz'x,y=1,2;)元组数据类型包含更多的方法:tup.index(x,[start,[stop]]))返回元组中start到stop索引中第一个值为x的元素在整个列表中的索引。如果没有匹配的元素就会返回一个错误。tup.count(x)返回x在元组中出现的次数。cmp(tuple1,tuple2)比较元组中两个元素。len(tuple)计算元组元素个数。max(tuple)返回元组中元素最大值。min(tuple)返回元组中元素最小值。tuple(seq)将列表转换为元组。元组不提供字符串、列表和字典中的方法。如果相对元组排序,通常先得将它转换为列表并使其成为一个可变对象,才能获得使用排序方法,或使用sorted内置方法。集合集合(set)是一个无序不重复元素的集。基本功能包括关系运算和消除重复元素。比如支持union(联合),intersection(交),difference(差)和sysmmetricdifference(对称差集)等数学关系运算。所有集合方法S.issubset(t)如果s是t的子集,则返回True,否则返回FalseS.issuperset(t)如果s是t的超集,则返回True,否则返回FalseS.unoin(t)返回一个新集合,该集合是s和t的并集,也可用s1|s2,但不能用s1+s2S.intersection(t)返回一个新集合,该集合是s和t的交集,,也可用s1&s2S.difference(t)返回一个新集合,该集合是s的成员,但不是t的成员,,也可用s1-s2S.symmetric_difference(t)对称差分是集合的异或,返回一个新集合,该集合是s或t的成员,但不是s和t共有的成员,也可用s1^s2S.copy()返回一个新集合,该集合是s的复制仅适合可变集合S.update(t)用t中的元素修改s,即s现在包括s或t的成员S.intersection_updates中的成员是共同属于s和t的元素S.difference_updates中的成员是属于s但不包含在t中的元素S.symmetric_difference_updates中的成员更新为那些包含在s或t中,但不是s和t共有的元素S.add(obj)在集合s中添加对象objS.remove(obj)从集合s中删除对象obj,如果obj不是集合s中的元素将有错误S.discard(obj)如果obj是集合s中的元素,从集合s中删除对象objS.pop()删除集合s中的任意一个对象,并返回它S.clear()删除集合s中的所有元素集合推导式语法:a={xforxin'abracadabra'ifxnotin'abc'}#'abc'默认是集合Python提供了for循环和while循环(在Python中没有do...while循环),for循环一般比while计数器循环运行得更快break语句,在语句块执行过程中终止循环,并且跳出整个循环continue语句,在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。pass语句,是空语句,是为了保持程序结构的完整性。不做任何事情,一般用做占位语句。循环else块,只有当循环正常离开时才会执行(也就是没有碰到break语句)If/While/for定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。#必选参数,默认参数,‘*’表可变参数,‘**’表关键字参数deffunc(a,b,c=0,*args,**kw):print'a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw调用函数时如何传入可变参数和关键字参数的语法:可变参数既可以直接传入:func(1,2,3),又可以先组装list或tuple,再通过*args传入:func(*(1,2,3));关键字参数既可以直接传入:func(a=1,b=2),又可以先组装dict,再通过**kw传入:func(**{'a':1,'b':2})。使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。Python查找名字的规则是LGB规则:大多数名字引用在三个作用域中查找:先局部(Local),次之全局(Global),再次之内置(Build-in)。python使用lambda来创建匿名函数:lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。importtimestart=time.clock()fib=lambdan,x=0,y=1:xifnotnelsefib(n-1,y,x+y)printfib(20)end=time.clock()printread:%fs%(end-start)==deffib(num):result=[0,1]foriinrange(num-2):result.append(result[-2]+result[-1])returnresultprintfib(15)斐波那契数列:斐波那契数列由十三世纪意大利数学家斐波那契发现。数列中的一系列数字常被人们称之为神奇数奇异数。具体数列为:0,1,1,2,3,5,8,13,21,34,55,89,144,233等,从该数列的第三项数字开始,每个数字等于前两个相邻数字之和。而斐波那契数列中相邻两项之商就接近黄金分割数0.618,与这一数字相关的0.191、0.382、0.5和0.809等数字就构成了股市中关于市场时间和空间计算的重要数字。在金融市场的分析方法中,斐波那契数字频频出现。例如,在波浪理论中,一轮牛市行情可以用1个上升浪来表示,也可以用5个低一个层次的小浪来表示,还可继续细分为21个或89个小浪;在空间分析体系中,反弹行情的高度通常是前方下降趋势幅度的0.382、0.5、0.618;回调行情通常是前方上升趋势的0.382、0.5和0.618。一、常见的几种迭代器迭代器在python中是以C语言的速度运行的,而while循环版本则是通过Python虚拟机运行Python字节码的。rangezip可以让我们使用for循环来并行使用多个序列,zip会取得一个或多个序列为参数,然后返回元组的列表,将这些序列中的并排的元素配成对。enumerate可以获得元素和元素的偏移值mapmap会对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含所有函数调用结果的一个列表。filter基于某一测试函数过滤出一些元素reduce对每对元素都应用函数并运行到最后结果Range:S='abcdefghijk'foriinrange(0,len(S),2):printS[i]==S='abcdefghijk'forcinS[::2]:printcZip:L1=[1,2,3,4]L2=[5,6,7,8]for(x,y)inzip(L1,L2):print(x,y,x+y)#构造字典keys=['a','b','c']vals=[1,3,5]D2={}for(k,v)inzip(keys,vals):D2[k]=vEnumerate:seasons=['Spring','Summer','Fall','Winter']dict(enumerate(seasons,start=3))Out[1]:{3:'Spring',4:'Summer',5:'Fall',6:'Winter'}Map:map((lambdax:x+3),[1,2,3,4])Out[2]:[4,5,6,7]Reduce:reduce((lambdax,y:x+y),[1,2,3,4])Out[3]:10importoperator,functoolsfunctools.reduce(operator.add,[2,4,6])Out[4]:12列表推导式:列表推导式由包含一个表达式的括号组成,表达式后面跟随一个for子句,之后可以有零或多个for或if子句。结果是一个列表,由表达式依据其后面的for和if子句上下文计算而来的结果构成。Eg:[(x,y)forxin[1,2,3]foryin[3,1,4]ifx!=y]Out:[(1,3),(1,4),(2,3),(2,1),(2,4),(3,1),(3,4)]matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]list(zip(*matrix))Out:[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]Numpy库数组的一些属性:a.ndim#查看行数a.shape#查看数组的维数,返回(n,m),其中n为行数,m为列数。a.dtype#查看元素的类型,比如numpy.int32、numpy.float64Numpy的特殊数组主要有以下几种:zeros数组:全零数组,元素全为0;np.zeros((2,3))ones数组:全1数组,元素全为1;np.ones((3,4))empty数组:空数组,元素全近似为0;np.empty((3,2))序列数组:arange函数:他与

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功