Python 函数2016年4月14日22:071、join()函数以下实例展示了join()的使用方法:#!/usr/bin/python str ="-";seq =("a","b","c");# 字符串序列print str.join( seq );以上实例输出结果如下:a-b-c2、str.zfill(width)将字符串str前面补0使得字符串长度为width3、lambda函数(匿名函数)a. lambda表达式返回可调用的函数对象.但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量.mbda 它只是一个表达式,而def是一个语句c.定义一些抽象的,不会别的地方再复用的函数d. lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值定义了一个lambda表达式,求三个数的和。
用lambda表达式求n的阶乘。
这里也可以把def直接写成lambda形式。
如下lambda函数可以很好和python中内建filter(),map(),reduce()函数的应用程序结合起来,因为它们都带了一个可执行的函数对象.4、filter(function or None, sequence) -> list, tuple, or string给定一个'过滤函数'和一个对象的序列,每个序列元素都通过这个过滤器进行筛选,保留函数返回为真的对象.filter函数为已知的序列的每个元素调用给定布尔函数.每个filter返回的非零(true)值元素添加到一个列表中.1 2 3 #!/usr/bin/python2.5 from random import randint4 5 6 7 allNums = []for eachNum in range(10):allNums.append(randint(1,100))print filter(lambda x: x%2,allNums) #使用filter()来移除所有偶数1 2 root@ ./getOdd.py [89, 45, 41, 29, 5, 29, 85]5、map(...)map(function, sequence[, sequence, ...]) -> listmap()内建函数与filter()相似,因为它也能通过函数来处理序列,但map()将函数调用'映射'到每个序列的元素上,并返回一个含有所有返回值的列表。
例如,映射函数是给每个进入的数字加10,并且将这个函数和一个数字的列表传给map().1 2 >>> 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它通过取出序列的头两个元素.将他们传入二元函数来获得一个单一的值来实现.然后又用这个值和序列的下一个元素来获得又一个值,然后继续直到整个序列的内容都遍历完毕以后最后的值会被计算出来为止.reduce(func,[1,2,3]) 等同于 func(func(1,2),3)例如:计算从1加到10的和1 2 >>> print 'the total is:',reduce((lambda x,y:x+y),range(1,11)) the total is: 55源文档 </blog/115096>源文档 </blog/122418>7、multiply(x,y)返回x乘以ynp.multiply(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:y : ndarrayThe sign of x.Examples>>> np.sign([-5., 4.5])array([-1., 1.])>>> np.sign(0)8、urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。
urldecode()函数与urlencode()函数原理相反,用于解码已编码的URL 字符串,其原理就是把十六进制字符串转换为中文字符Urlencode()函数的参数为字典Urllib.quote()函数的参数为字符串9、sys和操作系统相关的调用,系统相关的信息模块 import sys sys.argv是一个list,包含所有的命令行参数.sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象.从标准输入读一行 "a") 屏幕输出asys.exit(exit_code) 退出程序sys.modules 是一个dictionary,表示系统中所有可用的module sys.platform 得到运行的操作系统环境sys.path 是一个list,指明所有查找module,package的路径.源文档 <--id-3352833.html>10、文件操作1、打开文件f = open("filename", "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个字符f.readline() 读一行,到文件结尾,返回空串. f.readlines() 读取全部,返回一个list. list每个元素表示一行,包含"\n"\f.tell() 返回当前文件读取位置f.seek(off, where) 定位文件读写位置. off表示偏移量,正数向文件尾移动,负数表示向开头移动。
where为0表示从开始算起,1表示从当前位置算,2表示从结尾算.f.flush() 刷新缓存3、关闭文件: f.close()源文档 <--id-3352833.html>11、Itertools.groupby() :把迭代器中相邻的重复元素挑出来放在一起:>>> for key, group in itertools.groupby('AAABBBCCAAA'):... print(key, list(group))...A ['A', 'A', 'A']B ['B', 'B', 'B']C ['C', 'C']A ['A', 'A', 'A']实际上挑选规则是通过函数完成的,只要作用于函数的两个元素返回的值相等,这两个元素就被认为是在一组的,而函数返回值作为组的key。
如果我们要忽略大小写分组,就可以让元素'A'和'a'都返回相同的key:>>> for key, 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列为排序目标•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', 33)]sss = groupby(things, itemgetter(0)) for key, items in sss:print keyfor subitem in items:print subitemprint '-' * 20结果1 2 3 4 5 6 7 8 910111213 >>>2009-09-02 ('2009-09-02', 11) ('2009-09-02', 3) -------------------- 2009-09-03 ('2009-09-03', 10) ('2009-09-03', 4) ('2009-09-03', 22) -------------------- 2009-09-06 ('2009-09-06', 33) --------------------源文档 </p/3826114.html>源文档 </00143a6b348958f449949df42a6d3a2e542c000/0035cfdd1a541a18ddc15059e3ddeec000>12、itemgetter(dis)返回迭代器的第dis维的数据,dis为序号from operator import itemgettera = [1,2,3]>>> b=operator.itemgetter(1) //定义函数b,获取对象的第1个域的值>>> b(a)2>>> b=operator.itemgetter(1,0) //定义函数b,获取对象的第1个域和第0个的值>>> b(a)(2, 1)源文档 </article/details/>13、format()格式化输出函数Print ("{0}\t{1}\n".format(qq, cnt))其中"{0}\t{1}\n"是格式化字符串,{0},{1}是占位符1 #使用str.format()函数23 #使用'{}'占位符4 print('I\'m {},{}'.format('Hongten','Welcome to my space!'))56 print('#' * 40)78 #也可以使用'{0}','{1}'形式的占位符9 print('{0},I\'m {1},my E-mail is {2}'.format('Hello','Hongten',''))10 #可以改变占位符的位置11 print('{1},I\'m {0},my E-mail is {2}'.format('Hongten','Hello',''))1213 print('#' * 40)1415 #使用'{name}'形式的占位符16 print('Hi,{name},{message}'.format(name = 'Tom',message = 'How old are you?'))1718 print('#' * 40)1920 #混合使用'{0}','{name}'形式21 print('{0},I\'m {1},{message}'.format('Hello','Hongten',message = 'This is a test message!'))2223 print('#' * 40)2425 #下面进行格式控制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('The value of PI is approximately {0:.3f}.'.format(math.pi))303132 table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}33 for name, phone in table.items():34 print('{0:10} ==> {1:10d}'.format(name, phone))353637 table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}38 print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ''Dcab: {0[Dcab]:d}'.format(table))14、maketrans()方法语法:from string import maketrans # 引用 maketrans 函数。