python基础知识(六)函数----(八)

(六)函数----(八)

匿名函数

目录

(六)函数----(八)

6.1匿名函数的格式

6.2匿名函数和五个特殊的内置函数可以结合使用

6.3面试题练一练



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]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值