200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Python自学记录——高阶函数map/reduce filter sorted

Python自学记录——高阶函数map/reduce filter sorted

时间:2018-10-20 06:11:22

相关推荐

Python自学记录——高阶函数map/reduce filter sorted

Python内置了四个强大的函数,如标题所示,下面来记录说明下:

map

看见此 map 需要注意,python中的 map 和 java 中的 map,是不同的,java中的 map 与 python中的字典列表相近。

map是一个十分便利的函数,它可以将list中的每个值执行相同的函数方法,并返回一个新的迭代器对象Iterator,示例如下:

>>> l = [1,2,3,4,5]>>> def pf(num):...return num * num...>>> map(pf,l)<map object at 0x0000000001E5F160>>>> #为了方便看结果,用list()把Iterator对象转换成list>>> list(map(pf,l))[1, 4, 9, 16, 25]

上述示例中,是将一个包含若干整数的 list 执行 pf 方法,使其得到一个Iterator,并将其转化为list。

map作为高阶函数,可以执行更多复杂的操作,比如,将整型list转为字符型list,示例如下:

>>> l2 = [1,2,3,4,5]>>> list(map(str,l2))['1', '2', '3', '4', '5']

总结下:使用map函数,需要向其传入两个参数,第一个为 可迭代对象Iterable 中元素待执行的方法(简称函数),第二个为需要执行可迭代对象 Iterator ,如下所示:

map(函数,可迭代对象)

使用它方便,简单又快捷。

reduce

reduce的使用方法和map类似,它是把函数作用在一个序列上,需要的可迭代对象至少需要两个元素,示例如下:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

使用reduce前,需要导入函数,具体写法如下:

from functools import reduce

它可实现整数字符串 list 转为一个整数,示例如下:

>>> l3 = [1,2,3,4,5]>>> def list2num(x,y):...return x * 10 + y...>>> from functools import reduce>>> reduce(list2num,l3)12345

借此,我们可以实现很多事情,下面以浮点字符串,转浮点型为例,结合 map 和 reduce 写个例子:

>>> import test>>> test.str2float('123.456')123.456

上述代码调用了这个函数的方法:

from functools import reduceDIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}def str2float(num):znum = num[:num.index('.')]xnum = num[num.index('.')+1:]xn = len(xnum)def getnum(num):return DIGITS[num]z = list(map(getnum,znum))x = list(map(getnum,xnum))def list2num(x,y):return x*10 + ynznum = reduce(list2num,z)nxnum = reduce(list2num,x)return nznum+ nxnum*pow(0.1,xn)

filter

filter是一个列表过滤器,它可以根据条件过滤出列表中你想要的元素,使用起来也很简单,示例如下:

def t_test1(n):return n % 2 == 1list(filter(t_test1,[1,2,3,4,5,6,7]))[1,3,5,7]

它的使用方法也很简单,需要传两个参数,一个是根据函数内置条件返回 True或 False的函数;另一个是可迭代对象Iterator。

filter()把传入的函数依次作用与每个元素,然后根据返回值是 True或 False决定是保留还是丢弃该元素。

把一个序列的中的空字符删除,写法如下:

def t_t1(n):return n and n.strip()L4 = ['123','a','',' ',None]list(filter(t_t1,L4))['123','a']

sorted

sorted是Python内置的一个排序函数,它可以快速便捷的将列表中的元素排序,示例如下:

>>> L = [1,20,-19,25,30,-2]>>> sorted(L)[-19, -2, 1, 20, 25, 30]>>> L2 = ['abc','good','Cat','DOG','CAKE']>>> sorted(L2)['CAKE', 'Cat', 'DOG', 'abc', 'good']

如上述示例所示,sorted函数自动将列表中的元素按照大小进行排序,其中,字符传是根据ASCII码自字符串首位开始比较的。

使用它时,还可以给排序加入条件,比如,数字按绝对值大小排序,字符串按全小写来排序,示例如下:

>>> L = [1,20,-19,25,30,-2]>>> sorted(L,key=abs)[1, -2, -19, 20, 25, 30]>>> L2 = ['abc','good','Cat','DOG','CAKE']>>> sorted(L2,key=str.lower)['abc', 'CAKE', 'Cat', 'DOG', 'good']

如果想得到反向排列的列表,添加一个参数即可,示例如下:

>>> L = [1,20,-19,25,30,-2]>>> sorted(L,key=abs,reverse=True)[30, 25, 20, -19, -2, 1]>>> L2 = ['abc','good','Cat','DOG','CAKE']>>> sorted(L2,key=str.lower,reverse=True)['good', 'DOG', 'Cat', 'CAKE', 'abc']

sorted可以使代码更简洁,它很强大。

本篇就到这里,教材网址:继续学习~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。