




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python 函数2016年4月14日22:07 1、join()函数以下实例展示了join()的使用方法:#!/usr/bin/pythonstr = "-"seq = ("a", "b", "c"); # 字符串序列print str.join( seq );以上实例输出结果如下:a-b-c 2、str.zfill(width)将字符串str前面补0使得字符串长度为width 3、lambda函数(匿名函数)a. lambda表达式返回可调用的函数对象.但不会把这个函数对象赋给一个
2、标识符,而def则会把函数对象赋值给一个变量.b. lambda 它只是一个表达式,而def是一个语句c. 定义一些抽象的,不会别的地方再复用的函数d. lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值定义了一个lambda表达式,求三个数的和。用lambda表达式求n的阶乘。 这里也可以把def直接写成lambda形式。如下 lambda函数可以很好和python中内建filter(),map(),reduce()函数的应用程序结合起来,因为它们都带了一个可执行的函数对象. 4、filter(function or None, sequ
3、ence) -> list, tuple, or string给定一个'过滤函数'和一个对象的序列,每个序列元素都通过这个过滤器进行筛选,保留函数返回为真的对象.filter函数为已知的序列的每个元素调用给定布尔函数.每个filter返回的非零(true)值元素添加到一个列表中.1234567#!/usr/bin/python2.5from random import randint allNums = for eachNum in range(10): allNums.append(randint(1,100)print fi
4、lter(lambda x: x%2,allNums) #使用filter()来移除所有偶数12root00:# ./getOdd.py 89, 45, 41, 29, 5, 29, 85 5、map(.) map(function, sequence, sequence, .) -> listmap()内建函数与filter()相似,因为它也能通过函数来处理序列,但map()将函数调用'映射'到每个序列的元素上,并返回一个含有所有返回值的列表。 例如,映射函数是给每个进入的数字加10,并且将这个函数和一个数
5、字的列表传给map().12>>> map(lambda x:x+10,0,1,2,3,4,5,6,7,8,9)10, 11, 12, 13, 14, 15, 16, 17, 18, 19 >>> def add100(x): return x+100 . >>> hh = 11,22,33 >>> map(add100,hh) 111, 122, 133 6、reduce(.) reduce(function, sequence, initial) -> value它通过取出序列的头两个元素.
6、将他们传入二元函数来获得一个单一的值来实现.然后又用这个值和序列的下一个元素来获得又一个值,然后继续直到整个序列的内容都遍历完毕以后最后的值会被计算出来为止.reduce(func,1,2,3) 等同于 func(func(1,2),3)例如:计算从1加到10的和 12>>> print 'the total is:',reduce(lambda x,y:x+y),range(1,11)the total is: 55 源文档 < 源文档 < 7、multiply(x,y)返回x乘以ynp.multip
7、ly(2.0, 4.0)=8.0numpy.sign(x, out) x可以是单个参数也可以是数组Returns an element-wise indication of the sign of a number.The sign function returns -1 if x < 0, 0 if x=0, 1 if x > 0.Parameters: x : array_likeInput values.Returns:
8、160; y : ndarrayThe sign of x.Examples>>> np.sign(-5., 4.5)array(-1., 1.)>>> np.sign(0)0 8、urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符Urlencode()函数的参数为字典Urllib.quote()函数的参数为字符串 9、sys和操作系
9、统相关的调用,系统相关的信息模块 import sys sys.argv是一个list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.stdin.readline() 从标准输入读一行 sys.stdout.write("a") 屏幕输出a sys.exit(exit_code) 退出程序
10、160; sys.modules 是一个dictionary,表示系统中所有可用的module sys.platform 得到运行的操作系统环境 sys.path 是一个list,指明所有查找module,package的路径. 源文档 < 10、文件操作 1、打开文件 f = open("file
11、name", "r") r只读 w写 rw读写 rb读二进制 wb写二进制 w+写追加 2、读写文件 f.write("a") f.write(str) 写一字符串 f.writeline() f.readlines() 与下read类同 f.read() 全读出来 f.read(size) 表示从文件中读取size个字符
12、 f.readline() 读一行,到文件结尾,返回空串. f.readlines() 读取全部,返回一个list. list每个元素表示一行,包含"n" f.tell() 返回当前文件读取位置 f.seek(off, where) 定位文件读写位置. off表示偏移量,正数向文件尾移动,负数表示向开头移动。 wh
13、ere为0表示从开始算起,1表示从当前位置算,2表示从结尾算. f.flush() 刷新缓存 3、关闭文件 : f.close() 源文档 < 11、Itertools.groupby() :把迭代器中相邻的重复元素挑出来放在一起:>>> for key, group in itertools.groupby('AAABBBCCAAA'):. p
14、rint(key, list(group).A 'A', 'A', 'A'B 'B', 'B', 'B'C 'C', 'C'A 'A', 'A', 'A'实际上挑选规则是通过函数完成的,只要作用于函数的两个元素返回的值相等,这两个元素就被认为是在一组的,而函数返回值作为组的key。如果我们要忽略大小写分组,就可以让元素'A'和'a'都返回相同的key:>>> for ke
15、y, group in itertools.groupby('AaaBBbcCAAa', lambda c: c.upper():. print(key, list(group).A 'A', 'a', 'a'B 'B', 'B', 'b'C 'c', 'C'A 'A', 'A', 'a' · groupby(things, itemgetter(0) 以第0列为排序目标·
16、groupby(things, itemgetter(1)以第1列为排序目标· groupby(things)以整行为排序目标 from itertools import groupbyfrom operator import itemgetterthings = ('2009-09-02', 11), ('2009-09-02', 3), ('2009-09-03', 10), ('2009-09-03', 4), ('2009-09-03', 22), ('2009-09-06
17、9;, 33)sss = groupby(things, itemgetter(0)for key, items in sss: print key for subitem in items: print subitem print '-' * 20结果12345678910111213>>>2009-09-02('2009-09-02', 11)('2009-09-02', 3)-2009-09-03('2009-09-03', 10)('2009-09-03',&
18、#160;4)('2009-09-03', 22)-2009-09-06('2009-09-06', 33)- 源文档 < 源文档 < 12、itemgetter(dis)返回迭代器的第dis维的数据,dis为序号from operator import itemgettera = 1,2,3 >>> b=operator.itemgetter(1) /定义函数b,获取对象的第1个域的值>>> b(a)
19、;2 >>> b=operator.itemgetter(1,0) /定义函数b,获取对象的第1个域和第0个的值>>> b(a) (2, 1)源文档 < 13、format()格式化输出函数Print ("0t1n".format(qq, cnt)其中"0t1n"是格式化字符串,0,1是占位符 1 #使用str.format()函数 2 3 #使用''占位符 4 print('I'm ,'.format('Hongten&
20、#39;,'Welcome to my space!') 5 6 print('#' * 40) 7 8 #也可以使用'0','1'形式的占位符 9 print('0,I'm 1,my E-mail is 2'.format('Hello','Hongten','hongtenzone')10 #可以改变占位符的位置11 print('1,I'm 0,my E-mail is 2'.format('Hongten',
21、39;Hello','hongtenzone')12 13 print('#' * 40)14 15 #使用'name'形式的占位符16 print('Hi,name,message'.format(name = 'Tom',message = 'How old are you?')17 18 print('#' * 40)19 20 #混合使用'0','name'形式21 print('0,I'm 1,message'
22、.format('Hello','Hongten',message = 'This is a test message!')22 23 print('#' * 40)24 25 #下面进行格式控制26 import math27 print('The value of PI is approximately .'.format(math.pi)28 print('The value of PI is approximately !r.'.format(math.pi)29 print('Th
23、e value of PI is approximately 0:.3f.'.format(math.pi)30 31 32 table = 'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 767833 for name, phone in table.items():34 print('0:10 => 1:10d'.format(name, phone)35 36 37 table = 'Sjoerd': 4127, 'Jack': 4098, '
24、Dcab': 863767838 print('Jack: 0Jack:d; Sjoerd: 0Sjoerd:d; ''Dcab: 0Dcab:d'.format(table) 14、maketrans()方法语法:from string import maketrans # 引用 maketrans 函数。str.maketrans(intab, outtab)参数· intab - 字符串中要替代的字符组成的字符串。· outtab - 相应的映射字符的字符串。 15、translate()方法根据
25、参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。str.translate(table, deletechars);· table - 翻译表,翻译表是通过maketrans方法转换而来。· deletechars - 字符串中要过滤的字符列表。 以下实例展示了 translate()函数的使用方法:#!/usr/bin/pythonfrom string import maketrans # 引用 maketrans 函数。intab = "aeiou"outtab = "123
26、45"trantab = maketrans(intab, outtab)str = "this is string example.wow!"print str.translate(trantab); 以上实例输出结果如下:th3s 3s str3ng 2x1mpl2.w4w! 以上实例去除字符串中的 'x' 和 'm' 字符:#!/usr/bin/pythonfrom string import maketrans # Required to call maketrans ab = &
27、quot;aeiou"outtab = "12345"trantab = maketrans(intab, outtab)str = "this is string example.wow!"print str.translate(trantab, 'xm'); 以上实例输出结果:th3s 3s str3ng 21pl2.w4w! 源文档 < 16、迭代器iterator1)for循环可以用于Python中的任何类型,包括列表、元祖等等。实际上,for循环可用于任何“可迭代对象”,这其实就是
28、迭代器(实现了迭代器协议的对象)。任何这类的对象在Python中都可以用for循环或其他遍历工具迭代,迭代工具内部会在每次迭代时调用next方法,并且捕捉StopIteration异常来确定何时离开。使用迭代器一个显而易见的好处就是:每次只从对象中读取一条数据,不会造成内存的过大开销。比如要逐行读取一个文件的内容,利用readlines()方法,我们可以这么写:12for line in open("test.txt").readlines():print line这样虽然可以工作,但不是最好的方法。因为他实际上是把文件一次加载到内存中,然后逐行打印。当文件很大时,这个方法
29、的内存开销就很大了。利用file的迭代器,我们可以这样写:12for line in open("test.txt"): #use file iteratorsprint line这是最简单也是运行速度最快的写法,他并没显式的读取文件,而是利用迭代器每次读取下一行。17、生产器constructor包含yield语句的函数会被特地编译成生成器。当函数被调用时,他们返回一个生成器对象,这个对象支持迭代器接口。不像一般的函数会生成值后退出,生成器函数在生成值后会自动挂起并暂停他们的执行和状态,他的本地变量将保存状态信息,这些信息在函数恢复时将再度有效【不像return 生成值后
30、函数会退出,包含yield语句的函数会继续执行后续代码】来看一个yield的例子,用生成器生成一个Fibonacci数列:12345678910def fab(max): a,b = 0,1 while a < max: yield a #返回a值,函数不退出 a, b = b, a+b >>> for i in fab(20):. print i,",",.0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 ,源文档 < 2,内积:np.dot(a,b) 就可以来计算a,b的内积,同样的np.inner(a,b
31、)也可以,但是它要求最后一维度是要相同的,np.outer(a,b)则是将数组 展平为一维数组 再进行计算。3,求和,平均值,方差:比较简单,分别是np.sum(), np.mean(), np.var(), np.std()(这个是标准差),关键是在加入axis参数以后要很好的区分;看下面的例子应该就比较清楚了:4,最值和排序:最值有np.max(),np.min() 他们都有axis和out(输出)参数, 而通过np.argmax(), np.argmin()可以得到取得最大或最小值时的 下标。排序通过np.sort(), 而np.argsort()得到的是排
32、序后的数据原来位置的下标。 源文档 < 18、Zip() zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。1.示例1:x = 1, 2, 3y = 4, 5, 6z = 7, 8, 9xyz = zip(x, y, z)print xyz运行的结果是:(1, 4, 7), (2, 5, 8), (3, 6, 9)2.示例2:x = 1, 2, 3y = 4, 5, 6, 7xy = zip(x, y)print xy运行的结果是:(1, 4), (2, 5), (3, 6)5.示例5:x = 1, 2, 3y = 4, 5, 6z =
33、7, 8, 9xyz = zip(x, y, z)u = zip(*xyz)print u运行的结果是:(1, 2, 3), (4, 5, 6), (7, 8, 9)一般认为这是一个unzip的过程,它的运行机制是这样的:在运行zip(*xyz)之前,xyz的值是:(1, 4, 7), (2, 5, 8), (3, 6, 9)那么,zip(*xyz) 等价于 zip(1, 4, 7), (2, 5, 8), (3, 6, 9)所以,运行结果是:(1, 2, 3), (4, 5, 6), (7, 8, 9)源文档 < 19、collections.defaultdict()de
34、faultdict(function_factory)构建的是一个类似dictionary的对象,其中指定了values的类型,是function_factory的类实例,而且具有默认值。collections.defaultdict(list)使用起来效果和运用dict.setdefault(list)比较相似源文档 < 20、uniform() 函数uniform() 方法将随机生成下一个实数,它在x,y范围内。以下展示了使用 uniform() 方法的实例:#!/usr/bin/python# -*- coding: UTF-8 -*-import randomprint "uniform(5, 10) 的随机数为 : ", random.uniform(5, 10)print "uniform(7, 14) 的随机数为 : ", random.uniform(7, 14)以上实例运行后输出结果为:uniform(5, 10) 的随机数为 : 6.98774810047uniform(7, 14) 的随机数为 : 12.2243345905
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建造师备考焦点试题及答案
- 不容错过的二级消防工程师试题及答案
- 审计证据的收集与分析试题及答案
- 审计实务与中级会计试题及答案
- 2025年一级建造师考试时间规划策略试题及答案
- 初级审计知识框架与试题及答案展示
- 无人机数据处理技能试题及答案
- 2024年初级审计师考试学习资料试题及答案
- 实战演练一级建造师试题及答案
- 2025年建造师考试复习工作中的问题解决思路与方法试题及答案
- 空气动力学领域大模型研究思考与展望
- 2mm土工膜长丝土工布检测报告合格证
- 某危废处置公司事故风险辨识、评估报告
- 《神经外科显微手术机器人平台关键技术研究》
- 隧道应急救援培训
- 鼻咽癌放射治疗技术
- 航空发动机部件快速修复技术
- GB/T 44713-2024节地生态安葬服务指南
- 2024年大学生求职面试技巧培训课件
- 省级啤酒代理权合同
- DB11∕T 1513-2018 城市绿地鸟类栖息地营造及恢复技术规范
评论
0/150
提交评论