【Python】Python四大内置高阶函数(map、reduce、filter、sorted)
function:函数 iterable:一个或多个序列 
#内置函数
list(map(abs,[-1,3,-5,8]))[1, 3, 5, 8]list(map(lambda x: x.center(3,'#'),['马云','马化腾','李彦宏']))['#马云', '马化腾', '李彦宏']#自定义函数,计算3次方def square(x) :return x ** 3list(map(square, [1,2,3,4,5]))[1, 8, 27, 64, 125]# 使用 lambda 匿名函数list(map(lambda x: x ** 3, [1, 2, 3, 4, 5]))[1, 8, 27, 64, 125]# 提供了两个列表,对相同位置的列表数据进行相加list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))[3, 7, 11, 15, 19]list(map(lambda x: x%2==1, [1,3,2,4,1]))[True, True, False, False, True]
二、reduce函数 
function:函数 iterable:一个或多个序列 
from functools import reducenums = [6,9,4,2,4,10,5,9,6,9]print(nums)[6, 9, 4, 2, 4, 10, 5, 9, 6, 9]print(sum(nums))64print(reduce(lambda val,x: val+x,nums))64# 累计减法reduce(lambda x,y:x-y,[1,2,3,4])-8#累计乘法def multi(x,y):return x*yreduce(multi,[1,2,3,4])24reduce(lambda x,y:x*y,[1,2,3,4])24
三、filter函数 
function:判断函数。 iterable :可迭代对象。 
fil = filter(lambda x: x>10,[1,11,2,45,7,6,13])fil0x28b693b28c8 > # 可迭代对象,不能直接查看list(fil)[11, 45, 13]def isodd(num):if num % 2 == 0:return Trueelse:return Falselist(filter(isodd,range(1,13)))[2, 4, 6, 8, 10, 12]
四、sorted函数 
iterable:可迭代对象。 key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse :排序规则,reverse = True 降序 , reverse = False 升序(默认)。 
a = [5,7,6,3,4,1,2]b = sorted(a) # 保留原列表a[5, 7, 6, 3, 4, 1, 2]b[1, 2, 3, 4, 5, 6, 7]#利用keyL=[('b',2),('a',1),('c',3),('d',4)]sorted(L, key=lambda x:x[1])[('a', 1), ('b', 2), ('c', 3), ('d', 4)]#按年龄排序students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]sorted(students, key=lambda s: s[2])[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]#按降序sorted(students, key=lambda s: s[2], reverse=True)[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]#降序排列a = [1,4,2,3,1]sorted(a,reverse=True)[4, 3, 2, 1, 1]
在看一个更实用的案例,加入一个列表存了各个品牌手机的销量以及售价,我们可以进行各种排序后输出。
info = [('Apple',800,9799),('Xiaomi',40,3599),('Oppo',40,4199),('Vivo',100,4000),('Huawei',40,6899),]#正常排序print(sorted(info))[('Apple', 800, 9799), ('Huawei', 40, 6899), ('Oppo', 40, 4199), ('Vivo', 100, 4000), ('Xiaomi', 40, 3599)]#按销量排序print(sorted(info,key = lambda x: x[1],reverse=True))[('Apple', 800, 9799), ('Vivo', 100, 4000), ('Xiaomi', 40, 3599), ('Oppo', 40, 4199), ('Huawei', 40, 6899)]#按商品价格排序print(sorted(info,key = lambda x: x[2],reverse=True))[('Apple', 800, 9799), ('Huawei', 40, 6899), ('Oppo', 40, 4199), ('Vivo', 100, 4000), ('Xiaomi', 40, 3599)]#先价格 再销量排序print(sorted(info,key = lambda x: (x[2],x[1]),reverse=True))[('Apple', 800, 9799), ('Huawei', 40, 6899), ('Oppo', 40, 4199), ('Vivo', 100, 4000), ('Xiaomi', 40, 3599)]
··· END ···
往期精彩回顾 
适合初学者入门人工智能的路线及资料下载 中国大学慕课《机器学习》(黄海广主讲) 机器学习及深度学习笔记等资料打印 机器学习在线手册 深度学习笔记专辑 《统计学习方法》的代码复现专辑 AI基础下载 本站qq群955171419,加入微信群请扫码: 
评论
