码迷,mamicode.com
首页 > 移动开发 > 详细

Python单行函数lambda(小米)加reduce、map、filter(步枪)应用

时间:2018-08-25 14:13:28      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:resource   应用   使用   重复   简练   print   序列   ima   learning   

什么是lambda?

lambda定义匿名函数,并不会带来程序运行效率的提高,只会使代码更简洁。为了减少单行函数的定义而存在的。
lambda的使用大量简化了代码,使代码简练清晰。但是值得注意的是,这会在一定程度上降低代码的可读性。如果不是非常熟悉Python的人也许会对此很难理解。
如果可以使用for...in...if来完成的,坚决不用lambda。
如果使用lambda,lambda内不要包含循环,如果有,宁愿定义函数来完成,使代码获得可重用性和更好的可读性。如果你对你就喜欢用lambda来做,那也无可厚非,但是有内置函数减弱了代码的可读性!

 好了介绍完成了lambda,那就让我们来实际用一下,实例如下:

 技术分享图片

 

 

下面我们再来看看小米加上步枪的结合使用。
1、reduce + lambda
What is reduce?

Python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(列表,元组等)中的所有数据进行如下操作:传给reduce中的函数func() (必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。

关于python reduce的详细解析,后续详细介绍,下面我们介绍一下reduce + lambda的应用案例:

 技术分享图片

 

Python3 统计某字符串重复次数:

from functools import reduce
sentences = [The Deep Learning textbook is a resource intended to help students and practitioners enter the field of machine learning in general and deep learning in particular. ] 
word_count =reduce(lambda a,x:a+x.count("learning"),sentences,0)
print(word_count)

>2

2、map + lambda
What is map?

map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

格式:map(func, seq1[, seq2...] )

Python函数式编程中的map()函数是将func作用于seq中的每一个元素,并用一个列表给出返回值。如果func为None,作用同zip()。

详细应用code如下:

 技术分享图片

 

 

 

这里需要注意的是:升级到python3的时候,map函数有一个变化那就是,如果不在map前加上list,lambda函数根本就不会执行。


在python2中,map会直接返回结果:

技术分享图片

 

 

 

 

 

而再python3下面,返回的就是一个map对象:

<map object at 0x7f381112ad50>

如果要得到结果,必须用list作用于这个map对象。
 
3、filter + map
What is filter?

filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。
和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。


简单应用如下:

技术分享图片

 

 

这里简单介绍一下python内置函数小米加步枪,更详细的介绍再会,打完收工!

Python单行函数lambda(小米)加reduce、map、filter(步枪)应用

标签:resource   应用   使用   重复   简练   print   序列   ima   learning   

原文地址:https://www.cnblogs.com/zhangray/p/9533150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!