首页 > 编程语言 > 详细

python 匿名函数

时间:2020-03-26 16:38:59      阅读:48      评论:0      收藏:0      [点我收藏+]

什么是匿名函数:

#匿名就是没有名字
#定义有名函数
def func(x,y,z=1): return x+y+z #定义匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字 func=lambda x,y,z=1:x+y+z func(1,2,3) #让其有名字就没有意义

调用匿名函数

# 方式一:
# res=(lambda x,y:x+y)(1,2)
# print(res)

# 方式二:
# func=lambda x,y:x+y
# res=func(1,2)
# print(res)

 

有名函数与匿名函数对比

有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能

匿名函数:一次性使用,随时随时定义

应用:max,min,sorted,map,reduce,filter

匿名函数的应用

配合max使用

salaries={
    siry:3000,
    tom:7000,
    lili:10000,
    jack:2000
}

#配合max使用
res=max(salaries,key=lambda k:salaries[k])
print(res)      #lili

#配合min使用
res=min(salaries,key=lambda k:salaries[k])
print(res)     #jack

#配合sorted使用(默认是升序,)
res=sorted(salaries,key=lambda item:salaries[item])      #升序
print(res)            #[‘jack‘, ‘siry‘, ‘tom‘, ‘lili‘]

res=sorted(salaries,key=lambda k:salaries[k],reverse=True)    #降序
print(res)

======================
#配合map使用
l=[alex,lxx,wxx,薛贤妻]

#new_l=(name+‘_dsb‘ for name in l)    #用生成器表达式的方法
#print(new_l)

res=map(lambda name:name+_dsb,l)   #使用map+匿名函数
# print(res) # 生成器
for i in res:
    print(i,end=" ")        #==》alex_dsb lxx_dsb wxx_dsb 薛贤妻_dsb 

#配合filter使用
l=[alex_sb,lxx_sb,wxx,薛贤妻]
res=(name for name in l if name.endswith(sb))
# print(res)
for i in res:
    print(i,end=" ")     #alex_sb lxx_sb

res=filter(lambda name:name.endswith(sb),l)
# print(res)
for i in res:
    print(i,end=" ")       #alex_sb lxx_sb

#配合reduce使用
from functools import reduce
res=reduce(lambda x,y:x+y,[1,2,3],10) # 16
print(res)

res=reduce(lambda x,y:x+y,[a,b,c]) # ‘a‘,‘b‘
print(res)

 

python 匿名函数

原文:https://www.cnblogs.com/baicai37/p/12574180.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!