文章目录
函数进阶知识
一.高阶函数,把函数作为参数的函数
a=[1,2,3,4,5]
print(f"a列表的总和是{sum(a)}")
print(f"a列表的最大值是{max(a)}")
print(f"a列表的最小值是{min(a)}")
def gf(f,alist):
return f(alist)
print(f"a列表的总和是{gf(sum,a)}")
print(f"a列表的最大值是{gf(max,a)}")
print(f"a列表的最小值是{gf(min,a)}")
二,4个常用的高阶函数
①映射map
形式map(f,[a1,a2,a3])---->[f(a1),f(a2),f(a3)] -->f:函数
print(list(map(abs,[-2,-1,0,1,2])))
[2, 1, 0, 1, 2]
----->扩 匿名函数 lambda
适用于在一条语句中定义一个简单的函数,
形式lambda 变量:返回值 —eg–> i:i**3 传入i,输出i的立方
lambda常和map一起使用
print(list(map(lambda i:i**3,[-2,-1,0,1,2])))
[-8,-1,0,1,8]
--------------------------例子---------------------------
print(list(map(abs,[-2,-1,0,1,2])))
def pf(i):
return i*i
print(list(map(pf,[-2,-1,0,1,2]))) #用自己定义的平方函数
print([pf(i) for i in [-2,-1,0,1,2]]) #不用map
print(list(map(lambda i:i**3,[-2,-1,0,1,2])))
print(list(map(lambda i:sum(i),[(1,2),(3,4),(5,6)])))
[2, 1, 0, 1, 2]
[4, 1, 0, 1, 4]
[4, 1, 0, 1, 4]
[-8, -1, 0, 1, 8]
[3, 7, 11]
②递归reduce
形式reduce(f,[a,b,c,d])---->f(f(f(a,b),c),d)
from functools import reduce
print(reduce(lambda i,j:i*2+j,[1,2,3,4]))
((2*1+2)*2+3)*2+4
③ 过滤filter【常用】
a=[44,76,55,98,56,33,88]
plist=list(filter(lambda i:i<60,a)) #filter()留下ture ,抛弃flase
print(plist)
print(list(filter(lambda i:i//10==7,a)))
print(list(filter(lambda i:i%10==8,a)))
[44, 55, 56, 33]
[76]
[98, 88]
解读------->相当于筛子,true留下,flase丢弃
④排序sorted【常用】
print(sorted([-3,-1,2,4,0]))
print(sorted([-3,-1,2,4,0],key=abs))
print(sorted([3,1,2,4,0],key=lambda i:i%4))
[-3, -1, 0, 2, 4]
[0, -1, 2, -3, 4]
[4, 0, 1, 2, 3]
注解没有key 默认从小到大
key是一个函数