Python正课48 —— 匿名函数及其应用

本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12573219.html

一:匿名函数

1.def用于定义有名函数

# func = 函数的内存地址

def func(x,y):
    return x,y
print(func)

2.lambda用于定义匿名函数

print(lambda x,y:x+y)

3.调用匿名函数

lambda x,y:x+y只是一个内存地址,要加()才能调用

# 方式1:

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

func = lambda x,y:x+y
res = func(1,2)
print(res)

4.匿名函数用于临时调用一次的场景:更多的是将匿名函数与其他函数配合使用

二:匿名函数的应用

1.需求1:找出薪资最高的那个人 ==> lili

salaries = {
    'siri': 3000,
    'tom': 7000,
    'lili': 10000,
    'jack': 2000

}

# res = max([2,144,7,999])
# print(res)

# res = max(salaries)		# 默认按照key排序
# print(res)

输出:tom
salaries = {
    'siri': 3000,
    'tom': 7000,
    'lili': 10000,
    'jack': 2000

}

# 迭代出的内容    比较的值
# 'siri'         3000
# 'tom'          7000
# 'lili'         10000
# 'jack'         2000


def func(k):
    return salaries[k]

# =======max=======
res = max(salaries, key=func)   # 返回值 = func('siri')
print(res)

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

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

map的应用(了解)

l = ['alex', 'lxx', 'wxx', '薛贤奇']
new_l = (name + 'dsb' for name in l)
print(new_l)  

生成器

l = ['alex', 'lxx', 'wxx', '薛贤奇']
res = map(lambda name:name + 'dsb',l)
print(res)	# 生成器
l = ['alex', 'lxx', 'wxx', '薛贤奇']
# res = (name for name in l if name.endswith('sb'))
# print(res)

filter(lambda name:name.endwith('sb'),l)

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'],'Hello')     # Helloabc
print(res)

res = reduce(lambda x,y:x+y,['a','b','c'])     # Helloabc
print(res)
posted @ 2020-03-26 11:42  轻描丨淡写  阅读(424)  评论(0编辑  收藏  举报