lambda表达式

175 阅读3分钟

一、匿名函数

Python允许lamb da表达式来创建匿名函数。

\

lambda语句构建了一个函数对象,返回一个function object,如果要进行使用,只需要进行简单的赋值。少了def 过程,不用为函数命名而烦恼了,因为这个是匿名的。返回一个没有名字的函数对象,我们随便给个名字赋值就可以使用了。用完后,内存的垃圾清洁器,在不使用的时候,自动把垃圾清除掉,不用考虑释放资源的问题。

\

二、lambda表达式的重要作用

1、首先,Python在写一些执行脚本的时候,Python经常和linux服务器配合来写脚本,使用lambda就可以省下定义函数过程,比如我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。

2、对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候给函数起个名字也是很头疼,使用lambda就不需要考虑命名的问题了。

3、简化代码的可读性,由于普通的函数阅读经常要跳到开头def定义部分,使用lambda函数可以省去这样的步骤。

\

三、两个实用的BIF

这两个内置函数不是直接实现的,和lambda表达式结合起来使用。

1、filter():过滤器

过滤出你需要的资源。

Python的过滤器如何实现过滤功能的呢?可以看下注释:

\

\

filter有两个参数,第一个参数可以是个function,可以是个函数,也可以是个None对象。第二个参数可以是个可迭代的数据,iterable。如果第一个参数是个函数的话,将第二个可迭代数据里的每一个元素,作为函数的参数进行计算,把返回true的值筛选出来并成一个列表。如果第一个参数为None,则将第二个参数里面true的值筛选出来。

\

\

利用filter写出筛选出奇数的过滤器,普通写法:

\

使用lambda表达式:

\

2、map():映射

map()这个函数有两个内置参数,一个函数,一个可迭代的序列。

这个BIF的功能是将序列的每一个元素作为函数的参数进行运算加工,直到可迭代序列的每个元素都加工完毕,返回所有加工后的元素构成的新序列。

\

第一个参数是一个函数,这个函数用lambda表达式变成了一句话函数。map将这个函数跟着后面的序列每一个可迭代的元素进行运行,生成的每一个元素放到这个函数的参数里面去,进行加工后,得到加工后的值,返回组成一个序列。生成0-9十个数字,分别乘以2得到0,2,4,6,8,10,12,14,16,18。

\

思考题

1、打包的形式是灵活多变的列表而不是元祖(希望是[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]这种形式),你能做到吗?(采用map和lambda表达式)

\

\

2、使用zip会将两数以元组的形式绑定在一起。

\

\

\

本文分享自微信公众号 - 清菡软件测试(qinghanTester)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。