【匿名函数】
(匿名函数的介绍)
# 匿名函数用于被临时调用一次的场景:更多的是将匿名函数与其他函数进行组合使用 # 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,然后依次推