【匿名函数】

(匿名函数的介绍)

# 匿名函数用于被临时调用一次的场景:更多的是将匿名函数与其他函数进行组合使用

# def定义有名函数
def fun(x, y):
    return x + y


# 定义匿名函数语法:
print(lambda x, y: x + y)  # 接收x和y:然后运行x+y当作值返回 (:后面也可以直接写print,但不建议)
# <function <lambda> at 0x02395F60>

# 调用匿名函数:
# 方式一
res = (lambda x, y: x + y)(1, 3)
print(res)

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

# ---------但是上面两种都不是匿名函数的调用场景--------------

 

(匿名函数应用场景)

 # 需求:找到薪资最高的人(返回名字)

 2 sal = {"lxx": 100, "wxx": 200, "yxx": 300, "jxx": 600}
 3 print(max(sal)) #yxx
 4 # 当使用max()函数在一个字典上时,它默认返回字典中的最大键(key),而不是最大值(value)。所以不对,需要通过key去指定指定依据
# 方式一:
5 print(max(sal, key=lambda y: sal[y])) # 取最大值 比较依据是v,以k形式返回 6 7 8 # # key指的是以什么作为比较依据 9 # # 如果没有指定依据K,max会将迭代出来的内容当作参数传给函数,然后将函数的返回值作为比较依据 10 # # 不要将max迭代出来的内容当作比较依据,用k来指定比较依据, k后面要给一个函数 11 # 方式二: 12 def func(k): 13 return sal[k] 14 15 16 res = max(sal, key=func) 17 print(res)

【map、flter、reduce的用法】

print('--这几个都是迭代器---')
# ==========================================map映射的应用
l = ['jxx', 'wxx', 'lxx']
res = map(lambda name: name + '_dcm', l)
print(res)  # 生成器
print(res.__next__())  # jxx_dcm

# =========================================filter过滤的应用
l1 = ['jxx_dcm', 'wxx_dcm', 'lxx']
l2 = filter(lambda name: name.endswith('dcm'), l1)
print(l2)
print(l2.__next__())

# =========================================reduce把多个值放到一起,累加
from functools import reduce

res = reduce(lambda x, y: x + y, [1, 3, 5], 10)
print(res)  # 列表里取出一个值给x,10是初始值给y,然后相加得到11,第二次,就把11当作初始值传给y,3传给x,然后依次推

 

posted on 2023-11-29 20:56  认真的六六  阅读(9)  评论(0编辑  收藏  举报