定义
一个函数接收另外一个函数作为参数,这种函数就成为高阶函数。
map()
,接收两个参数,一个函数,一个Iterable,返回一个Iterator
def f(x):
return x*x
L = [1, 2, 3, 4, 5, 6]
new_L = map(f, L)
print(list(new_L))
输出:[1, 4, 9, 16, 25, 36]
reduce()
,也接收两个参数,一个函数,一个Iterable,相当于:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
from functools import reduce
def add(x, y):
return x + y
L = [1, 2, 3, 4, 5, 6]
print(reduce(add, L))
输出:21
filter()
,接收两个参数,一个函数,一个Iterable,函数一次作用于序列的每一项,True则保留,False则丢弃
def is_not_empty(s):
return s or s.strip()
L = ['1', 's', '', 'r']
new_L = filter(is_not_empty, L)
print(list(new_L))
输出:['1', 's', 'r']
sorted()
也是一个高阶函数,可以接收参数key和reverse
#字母排序,忽略大小写
L = ['bob', 'about', 'Zoo', 'Credit']
print(sorted(L))
print(sorted(L, key=str.lower))
print(sorted(L, key=str.lower, reverse=True))
输出:
['Credit', 'Zoo', 'about', 'bob']
['about', 'bob', 'Credit', 'Zoo']
['Zoo', 'Credit', 'bob', 'about']