当前位置: 首页 > 后端技术 > Python

Python中常用的高阶函数

时间:2023-03-26 13:53:10 Python

lambda在使用一些函数的时候,我们不需要显式定义函数名,直接传入lambda匿名函数即可。Lambda匿名函数通常与其他函数结合使用。例如,你可以直接使用下面的lambda表达式来计算当x=3时y=x*3+5的函数值。In[1]:(lambdax:x*3+5)(3)Out[1]:14map说明:map(func,iter),func代表函数名,iter为迭代器。功能:map函数以一个函数和一个序列/迭代器(可传入多个)为参数,将函数应用于序列中的每个元素,并返回一个迭代器。In[4]:a=list(range(5))In[5]:b=list(range(2,7))#结合lambda匿名函数,对lista中的每个元素计算x*3+5的函数值In[6]:list(map(lambdax:x*3+5,a))Out[6]:[5,8,11,14,17]In[9]:defadd(x,y):...:returnx+y#传入多个序列,将a和b两个序列中对应的元素依次传递给add函数计算#注:a和b两个序列的长度可以不同EqualIn[10]:list(map(add,a,b))Out[10]:[2,4,6,8,10]filter说明:filter(func,iter),func代表函数name,iter是迭代器。功能:使用一个函数来测试序列/迭代器中每个元素的真实性,并返回一个过滤后的迭代器。例如过滤掉所有偶数In[18]:a=list(range(5))In[19]:defisodd(number):...:ifnumber%2==0:...:returnFalse...:returnTrue...:In[20]:filter(isodd,a)Out[20]:In[21]:list(filter(isodd,a))Out[21]:[1,3]reduce说明:reduce(func,iter),func是函数名,iter是迭代器。功能:传入一个函数和序列/迭代器,它将滚动计算序列中的元素,并返回单个结果。注意:需要在functools模块中引入reduce。例如,您想要计算列表中所有元素的总和。在[23]中:fromfunctoolsimportreduceIn[24]:a=list(range(5))In[25]:sum=reduce((lambdax,y:x+y),a)In[26]:sumOut[26]:10sorted说明:sorted(iter,key,reverse=False),iter是迭代器,key表示排序键(按什么排序),reverse表示是否降序(默认升序)。功能:根据key实现自定义排序,返回排序后的结果。例如,按照aIn[30]中每个字符串的最后一个数字降序排列:aOut[30]:['fasad_2','fadfc_4','7hdc_0','ncsl_1','fai_3']In[32]:sorted(a,key=lambdax:int(x[x.rindex('_')+1:]),reverse=True)Out[32]:['fadfc_4','fai_3','fasad_2','ncsl_1','7hdc_0']