一、定义:相较于有名函数,匿名函数没有函数名,所以无法通过名字调用,用关键字lambda定义。
def add(a, b): return a + b # 下方的匿名函数即实现了上方的有名函数add的功能,并且会自动返回值 lambda a, b: a + b # 匿名函数因为没有被名字引用,若不立刻执行,或赋值给一个名字,就会在造出的同时被系统回收
二、调用场景:
1、临时调用:直接调用获得其返回值。
2、配合其他函数使用:本质也是临时调用,需要将其返回值用于函数内。
3、匿名函数与内置函数的配合使用:
ddd = {'a': 2,
'b': 4,
'c': 1,
'd': 3
}
res1 = max(ddd, key=lambda k: ddd[k])
# max()会把放入的可迭代对象进行遍历,返回最大的元素,
# 可以用key声明比较标准,key会把每次遍历的值作为后方表达式的参数得到结果
print(res1) # 结果为 b
res2 = min(ddd, key=lambda k: ddd[k])
print(res2) # min()的功能与max()正好相反,返回最小的元素,结果为 c
res3 = sorted(ddd, key=lambda k: ddd[k])
print(res3) # sorted()会把放入的可迭代对象进行遍历并升序排序为列表,返回排序后的结果 ['c', 'a', 'd', 'b']
res4 = sorted(ddd, key=lambda k: ddd[k], reverse=True)
print(res4) # 可以用reverse声明为降序,结果为 ['b', 'd', 'a', 'c']
res5 = map(lambda x: x * 3, ddd)
print(res5)
# map()会把放入的可迭代对象进行遍历,对每次的元素按照左边的表达式计算结果,
# 返回出可迭代所有结果的生成器
print(next(res5)) # 结果为 aaa
res6 = filter(lambda x: x in ['b', 'c'], ddd)
print(res6)
# filter()会把放入的可迭代对象进行遍历,对每次的元素判断是否符合左侧条件
# 把所有符合条件的值作为返回出的生成器的可取值
print(next(res6)) # 结果为 b
print(next(res6)) # 结果为 c
from functools import reduce
res7 = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
# reduce()会把放入的可迭代对象进行遍历,对每次的元素按照左侧表达式叠加计算,遍历完返回最终结果
print(res7) # 结果为 15
浙公网安备 33010602011771号