匿名函数

1 匿名函数的定义

python中使用lambda定义的函数即为匿名函数,它定义时没有自己的名字

# 1、def用于定义有名函数
# func=函数的内存地址
def func(x,y):
    return x+y
print(func)


# 2、lamdab用于定义匿名函数
# 定义匿名函数,下面一行代码即为匿名函数的内存地址
lambda x,y:x+y

2 定义匿名函数的格式

lambda 参数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)

以上两种方式都可以调用匿名函数,但是匿名函数基本不会这样使用

匿名一般用于临时调用一次的场景:

更多的是将匿名与其他函数配合使用

4匿名函数使用实例

4.1 分析过程

salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
}
# 需求1:找出薪资最高的那个人=》lili

# max函数可以传入可迭代对象,得到最大值
res=max([3,200,11,300,399])
print(res)

# 直接对字典使用会发现比较的是key大小,而不是value
res=max(salaries)
print(res)

4.2 max,min配合匿名函数使用

salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
}
# 迭代出的内容    比较的值
# 'siry'         3000
# 'tom'          7000
# 'lili'         10000
# 'jack'         2000


# ========================max的应用

# 不使用匿名函数
def func(k):
    return salaries[k]
res=max(salaries,key=func) # 返回值=func('siry')
print(res)

# 使用匿名函数
res=max(salaries,key=lambda k:salaries[k])
print(res)


# ========================min的应用
res=min(salaries,key=lambda k:salaries[k])
print(res)




4.3 sorted配合匿名函数使用

# ========================sorted排序
salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
}
res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
print(res)

4.4 map配合匿名函数使用

# ========================map的应用(映射)
l=['alex','lxx','wxx','薛贤妻']

new_l=(name+'_dsb' for name in l)
print(new_l)

res=map(lambda name:name+'_dsb',l)
print(res) # 生成器

4.5 filter配合匿名函数使用

# ========================filter的应用(过滤筛选)
l=['alex_sb','lxx_sb','wxx','薛贤妻']
res=(name for name in l if name.endswith('sb'))
print(res)

res=filter(lambda name:name.endswith('sb'),l)
print(res)

4.6 reduce配合匿名函数使用

# ========================reduce的应用
from functools import reduce	# python 3中需导入,python2可以直接使用reduce()
res=reduce(lambda x,y:x+y,[1,2,3],10) # 可以设定初始值:10
print(res)
# 16

res=reduce(lambda x,y:x+y,['a','b','c']) 
print(res)
# abc
 posted on 2020-03-26 22:01  wwwpy  阅读(274)  评论(0编辑  收藏  举报