Python3中的高阶函数(map,reduce,filter,sorted)

来源:互联网 发布:手机数据采集程序 编辑:程序博客网 时间:2024/05/21 11:33

一,map

map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回,实际就是数学中的给定函数和变量求值

def f(x):#mapreturn x*xprint(list(map(f,[1,2,3,4,5])))#将f函数作用于list的每一个元素print(list(map(str,[1,2,3])))#将整数转为字符串
二、reduce

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

def mul(x,y):    return x*y;print(reduce(mul,[1,2,3,4,5,6]))#累计求积
三、filter
map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,返回值是True则保留,否则舍弃

def is0dd(n):return n%2==0print(list(filter(is0dd,[1,2,3,4,5,6])))#过滤偶数
四、sorted

使用sorted()方法和list.sort()方法进行排序,其中sorted()排序之后还是list,list.sort()排序返回的是一个object,需要输出排序内容还需要进行print()
elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]print(sorted(elements))#[(1, 3, 'L'), (1, 11, 'N'), (2, 4, 'B'), (2, 12, 'A')]elements.sort()print(elements)#注意此处不能写成print(elements.sort()
operator模块中的itemgetter()函数,用于获取对象的哪些维的数据
from operator import itemgetterL = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]print(sorted(L,key=itemgetter(0)))#按名字排序print(sorted(L,key=itemgetter(1),reverse=True))#按成绩从高到低排序
排序中除了应用itemgetter外还可以用内置函数lambda
elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]
print(sorted(elements,key=lambda e:e[1:]))#通过切片的方式 按后两个元素排序print(sorted(elements,key=lambda e:(e[1],e[2])))#直接指定,必须用()括起来



阅读全文
0 0
原创粉丝点击