[python] 高阶函数
高阶函数
变量可以指向函数,函数的参数可以接收变量,那么函数可以接收另一个函数作为参数,这种函数称为高阶函数
(1)把函数作为实参
(2)把函数作为返回值
#函数作为实参
def fun(f):
return f()
def hello():
return "hello world"
print (fun(hello))
#函数作为返回值
def fun():
def hello():
return "hello world"
return hello
f=fun()
print(f())
系统内置的高阶函数
map映射
根据提供的函数对指定序列做映射, 并返回映射后的序列
map(function, iterable, ...)
参数/返回值
function – 函数, 序列中的每个元素需要执行的操作, 可以是匿名函数
iterable – 一个或多个序列
Python 2.x中返回列表, Python 3.x中返回map类
reduce
函数会对参数序列中元素进行累积
函数将集合中的所有数据进行下列操作:用传给educe中的函数function先对集合中的第1、2个元素进行操作,得到的结果再与第三个数据用function函数运算,最后得到一个结果
在Python3中,reduce函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里,如果想要使用它,则需要通过引入functools模块来调用reduce函数
reduce(function, iterable[, initializer])
参数/返回值
function – 函数, 序列中的每个元素需要执行的操作, 可以是匿名函数
iterable – 需要执行操作的序列
initializer – 可选,初始参数
最后返回函数的计算结果, 和初始参数类型相同
filter过滤
用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表
filter(function, iterable)
参数/返回值
function – 过滤操作执行的函数
iterable – 需要过滤的序列
序列的每个元素作为参数传递给函数进行判,然后返回True或False,最后将返回True的元素放到新列表中
Python 2.x中返回的是过滤后的列表, 而Python 3.x中返回到是一个filter类
sorted
排序
enumerate
zip
reverse