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

一,map

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

def f(x):#map
	return x*x
print(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==0
print(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 itemgetter
L = [('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])))#直接指定,必须用()括起来




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值