高阶函数满足以下条件之一:
- 函数接受一个或多个函数作为参数传入;
- 函数返回一个函数
1、map函数
map(func,*iterable):返回一个可迭代对象,此迭代对象用函数func对可迭代对象iterable中的每一个函数作为参数计算后得一结果,当最短的一个可迭代对象不再提供数据时可迭代对象生成数据结束。
def pow2(x): return x** 2 for x in map(pow2,range(1,10)): print(x)
>>> def pow2(x): ... return x**2 ... >>> for i in map(pow2,range(1,10)): ... print(i) ... 1 4 9 16 25 36 49 64 81
2、filter函数
filter(func,iterable):返回一个可迭代对象,此迭代对象将对iterable中获取到的数据用函数func进行筛选。func将对iterable中的每个元素进行求值,返回False则将此数据丢弃,返回True,则保留此数据。
def myadd(x): return x % 2 == 1 for i in filter(myadd,range(11)): print(i)
>>> def myadd(x): ... return x % 2 == 1 ... >>> for i in filter(myadd,range(1,11)): ... print(i) ... 1 3 5 7 9
3、sorted函数
描述
sorted()函数对所有可迭代的对象进行操作
sort和sorted区别
- sort是应用在list上的方法,sorted是可对所有可迭代对象进行排序操作
- list的sort方法返回的是对已经存在的列表进行操作,无返回值;而sorted方法返回的是一个新的list,而不是在原来的基础上进行操作。
语法
sorted(iterable,cmp=None,key=None,reverse=False)
参数说明:
- iterable:可迭代对象
- cmp:比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵循的规则为:大于则返回1;小于则返回-1,等于则返回0
- key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
- reverse:排序规则,reverse=True表示降序;reverse=False表示升序(默认)
实例
>>>a = [5,7,6,3,4,1,2] >>> b = sorted(a) # 保留原列表 >>> a [5, 7, 6, 3, 4, 1, 2] >>> b [1, 2, 3, 4, 5, 6, 7] >>> L=[('b',2),('a',1),('c',3),('d',4)] >>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数 [('a', 1), ('b', 2), ('c', 3), ('d', 4)] >>> sorted(L, key=lambda x:x[1]) # 利用key [('a', 1), ('b', 2), ('c', 3), ('d', 4)] >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] >>> sorted(students, key=lambda s: s[2]) # 按年龄排序 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] >>> sorted(students, key=lambda s: s[2], reverse=True) # 按降序 [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!