1.3 python函数进阶知识

函数进阶知识

一.高阶函数,把函数作为参数的函数

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是一个函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值