(六)函数----(八)
匿名函数
目录
6.1匿名函数的格式
lambda 参数,参数2 : 返回值表达式
def add(x,y):
return x + y
add = lambda x,y : x+y
print(add(1,4))
6.2匿名函数和五个特殊的内置函数可以结合使用
匿名函数在内置函数 max() 求最大值,min()求最小值, map() 映射, zip() 合并, filter() 过滤
a.在max()函数中的应用
#max()
ret = map(abs,[-1,2,-3,4])
for i in ret:
print(i)
1
2
3
4
#def
dic={'k1':10,'k2':100,'k3':30}
def func(key):
return dic[key]
print(max(dic,key=func)) #根据返回值判断最大值,返回值最大的那个参数是结果
#lambda
print(max(dic,key=lambda key:dic[key]))
k2
b.在min()函数中的应用
c.在map()函数中的应用
def func(x):
return x**2
ret = map(func,[-1,2,-3,4])
for i in ret:
print(i)
#lambda
ret = map(lambda x:x**2,[-1,2,-3,4])
1
4
9
16
d.在filte()函数中的应用
def func(x):
return x>10
res = filter(func,[5,8,11,9,15])
for i in res:
print(i)
#lambda
res = filter(lambda x:x>10,[5,8,11,9,15])
11
15
e.在zip()函数中的应用
ret = zip((('a'),('b')),(('c'),('d')))
print(ret)
print(list(ret))
#<zip object at 0x0000025A000322C8>
#[('a', 'c'), ('b', 'd')]
ret = zip((('a'),('b')),(('c'),('d')))
for i in ret:
print(i)
('a', 'c')
('b', 'd')
6.3面试题练一练
1.
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x) #x = 4
x = t(x) #x = 12
x = d(x) #x = 24
print(x)
2.现有两元组(('a'),('b')),(('c'),('d')),
请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
ret = zip((('a'),('b')),(('c'),('d')))
ret = map(lambda t:{t[0]:t[1]},ret)
print(list(ret))
#[{'a': 'c'}, {'b': 'd'}]
匿名函数 == 内置函数
#zip #字典要转化为列表
ret = zip(('a','b'),('c','d'))
def func(tup):
return {tup[0]:tup[1]}
res = map(func,ret)
print(list(res))
#[{'a': 'c'}, {'b': 'd'}]
ret = zip((('a'),('b')),(('c'),('d')))
res = map(lambda tup:{tup[0]:tup[1]},ret)
print(list(res))
def multipliers():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
#[6, 6, 6, 6]