python lambda的应用_day17.Python中lambda表达式应用

对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

#普通函数

1 deffunc(a):2 return a+1

3 print 'test1_func0:',func(1000)4

#lambda表达式

5 func0 = lambda a:a+1

6 print 'test2_func0:',func0(1000)

上面这种方法,都实现了将1000+1的结果打印出来这个功能。

lambda存在意义就是对简单函数的简洁表示。

1198151-20170803153538053-1652052285.png

上面是我们对calc这个匿名函数的分析,下面给出了一个关于匿名函数格式的说明

函数名 = lambda参数 :返回值#参数可以有多个,用逗号隔开#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值#返回值和正常的函数一样可以是任意数据类型

我们可以看出,匿名函数并不是真的不能有名字。

匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了。

说到lambda,这里再赠送一些可以给lambda加buff小伙伴:

1.map函数,我们使用map函数将会对列表中的所有元素进行操作。map有两个参数(函数,列表),它会在内部遍历列表中的每一个元素,执行传递过来的函数参数。在输出到新列表中。

1 li = [11, 22, 33]2 new_list = map(lambda a: a + 100, li)

输出:[111, 122, 133]

当然,map还可以完成多个数组的相加:

li = [11, 22, 33]

sl= [1, 2, 3]

new_list= map(lambda a, b: a +b, li, sl)printnew_list

输出:[12, 24, 36]

2.reduce函数,对于序列内所有元素进行累计操作:

lst = [11,22,33]

func2= reduce(lambda arg1,arg2:arg1+arg2,lst)print 'func2:',func2

输出:func2:66

3.filter函数,他可以根据条件对数据进行过滤:

li = [11, 22, 33]

new_list= filter(lambda arg: arg > 22, li)printnew_list

输出:[33]

面试题练一练

现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

ContractedBlock.gif

ExpandedBlockStart.gif

#答案一

test = lambda t1,t2 :[{i:j} for i,j inzip(t1,t2)]print(test(t1,t2))#答案二

print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))#还可以这样写

print([{i:j} for i,j in zip(t1,t2)])

答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值