7.8 匿名函数
- 有名函数:有名字的函数
#有名函数的定义
def func():pass#有名函数的调用
func()
- 匿名函数
匿名函数:没有函数名的函数
- lambda关键字定义
- 语法:
- (lambda 形参 : 逻辑代码 )(实参)
#赋值又变成有名函数,不建议这样写
f=lambda x,y : x+y
f(1,2)
print((lambda x,y:x+y)(1,2)) #匿名函数也能调用,但是调用需要注意只能使用一次,匿名函数一般不单独使用。
#而是与max(),min(),map(),sorted(),filter()这些内置函数一起使用。
- 内置函数
-
'a'.strip()
-
对于python而言,在python解释器启动时候内置函数就存在
- lambda & max()
max() :将值丢到max()函数里面返回最大值,传入参数类型为字典,则默认按键值取最大。
#薪资信息
salary_dict={'jane':8000,'coco':3000,'mike':5000,'lihua':10000}
找到工资最高的人
- max() 默认用法
- 找出薪资最高的人可以使用max()方法但是max默认比较的是字典的key
- 按字母比较从小到大:coco,lihua,jane,mike
max_salary=max(salary_dict)
print(max_salary)
mike
num_max=max(2,4,3,5,78,53.24)
print(num_max)
78
- max用法2 : max(可迭代对象,key=func)
def func(name):return salary_dict[name]max_salary=max(salary_dict,key=func)
#将字典作为参数一个一个传入函数func中,返回值按照返回值比较大小,返回工资最高的人
print(max_salary)
lihua
- 上述代码逻辑
- salary_dict变成迭代器对象salary_dict_iter
- res=salary_dict.__iter.next
- res丢入函数func中,返回8000,3000,5000,10000
- 得到函数的返回值把这个返回值作为判断依据
#lambda & max()
salary_max=max(salary_dict,key=lambda name:salary_dict[name])
print(salary_max)
- lambda & min()
- min()返回最小值,类似于max
salary_min=min(salary_dict,key=lambda name:salary_dict[name])
print(salary_min)
coco
- lambda & sorted()
#默认用法
lis=[1,3,4,2,1,4,5]
sort_lis=sorted(lis)
print(sort_lis)
[1, 1, 2, 3, 4, 4, 5]
#lambda & sorted() salary_sort=sorted(salary_dict,key=lambda name:salary_dict[name])
#按照值排序返回排序后的key
print(salary_sort)
['coco', 'mike', 'jane', 'lihua']
7. lambda & map()映射
name_lis=['coco','jane','mike','lihua']#在每个元素后添加3000
name_lis_map=map(lambda name:f'{name}:3000',name_lis)
print(name_lis_map) #name_lis_map是一个迭代器
print(list(name_lis_map))
<map object at 0x0000018374BE2020>
['coco:3000', 'jane:3000', 'mike:3000', 'lihua:3000']
- lambda & filter() 过滤
lis=['coco:3000', 'jane:3000', 'mike:3000', 'lihua:3000','aike']#过滤出不以3000为结尾的元素
lis_filter=filter(lambda x:not x.endswith('3000'),lis)
print(lis_filter) #lis_filter 是迭代器
print(list(lis_filter))
<filter object at 0x0000018374BE30A0>
['aike']