Python的高阶函数有 map、filter、reduce、sorted,今天就给大家详细介绍下相关信息。
1、map
map是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
def fn(x):
return x*x
r=map(fn,[1,2,3,4,5,6,7,8])
print(list®)
结果: [1, 4, 9, 16, 25, 36, 49, 64]
2、reduce
reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
#把序列[1, 3, 5, 7, 9]变换成整数13579
from functools import reduce
def fn(x, y):
return x*10+y
print(reduce(fn, [1, 3, 5, 7, 9]))
结果:13579
3、filter
filter()函数接收一个函数 f 和一个list,这个函数f的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
def not_empty(s):
return s and s.strip()
arr=list(filter(not_empty, [‘A’, ‘’, ‘B’, None, ‘C’, ’ ']))
print(arr)
结果:[‘A’, ‘B’, ‘C’]
注:1.用filter()这个高阶函数,关键在于正确实现一个“筛选”函数。
2.注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
4、sorted
排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。
Python内置的sorted()函数就可以对list进行排,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
#默认正序reverse=False ,reverse=True 反向排序
a = sorted([36, 5, -12, 9, -21], key=abs,reverse=False)
print(a)
结果:[5, 9, -12, -21, 36]
上述就是关于Python的高阶函数的相关介绍了,希望能够给大家带来帮助。
转载:https://blog.csdn.net/zhimaHTTP/article/details/113564959