什么是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内置函数小米加步枪,更详细的介绍再会,打完收工!
原文地址:https://www.cnblogs.com/zhangray/p/9533150.html
时间: 2024-10-25 04:32:43