匿名函数

1.什么是匿名函数
def定义的是有名函数:特点是可以通过名字充分调用
def func(): func=函数的内存地址
pass
匿名函数就是没有名字的函数:特点是只能再定义使用一次

2.为何要用匿名函数
强调:
匿名函数的定义就相当于只产生了一个变量在值,而没有绑定任何名字,所以会在定义完之后就被回收,无法重复使用,只能在定义时使用一次。
应用:当某一个功能仅使用一次就没有再重复使用的必要了就应该定义成匿名函数。

3.如何使用匿名函数
lambda x,y:x+y

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

def sum2(x,y)
	return x+y
	 
salaries = {
	'egon':3000,
	'alex':100000000,
	'wupeiqi':10000,
	'yuanhao':2000
}
nums=[10,-1,11,9,23]
print(max(nums))
print(max(salaries.values()))

#key=函数的内存地址:作用是控制max函数的比较的值
def func(k):
	return salaries[k]

print(max(salaries,key=func))
#1.将可迭代对象salaries变成迭代器对象iter_obj
#2.next(iter_obj)得到一个人名,然后将该人名当作参数传给key指定的函数,然后调用函数的返回值当作比较依据
#3.比较大小,取出最大值对应的人名
print(max(salaries,key=lambda k:salaries[k]))
print(min(salaries,key=lambda k:salaries[k]))

#sorted排序
nums=[10,-1,11,9,23]
print(sorted(nums))
print(nums)

salaries = {
	'egon':3000,
	'alex':100000000,
	'wupeiqi':10000,
	'yuanhao':2000
}
print(sorted(salaries,key=lamba k:salaries[k]))
print(sorted(salaries,key=lamba k:salaries[k]),reverse=True)

#map
names = ['alex','wupeqi','yuanhao','kevin','hu老师']
#方式一:手动实现
new_names=[]
for name in names:
	new_names.append(name+'dsb')
print (new_names)

#方式二:列表生成式
new_names = [name + 'dsb' for name in names]
#print(new_names)

#方式三:map+匿名函数
res = map(lambda x: x + 'dsb', names)
print(res)
print(list(res))

#reduce
#方式一:手动实现
res=0
for i in range(101):
	res+=i
print(res)

方式二:列表生成式
print(sum([i for i in range(101)]))

方式三:reduce+匿名函数
from functools import reduce
print(reduce(lambda x,y:x+y,[i for i in range(101)],100))
print(reduce(lambda x,y:x+y,[i for i in range(101)]))
print(reduce(lambda x,y:x+y,['h','e','l','l','o'],'-----------------'))

#filter
names=['alex_dsb','wxx_sb','kevin_sb','hu_sb','egon']
#方式一:手动实现
new_name=[]
for name in names:
	if name.endwith('sb')
		new_names.append(name)
print(new_names)

#方式二:列表生成式
new_names=[name for name in names if name.endwith('sb')]
print(new_names)

#方式三:filter+匿名函数
res=filter(lambda name:name.endwith('sb'),names) 
print(res)
print(list(res))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值