高阶函数满足以下条件之一:
- 函数接受一个或多个函数作为参数传入;
- 函数返回一个函数
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)]