高阶函数
把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。
函数式编程就是指这种高度抽象的编程范式
计算两个值的绝对值
- 方法一
def sum_num(a,b):
return abs(a)+abs(b)
result = sum_num(1,-1)
- 方法二
def sum_num(a,b,f):
return f(a)+f(b)
result = sum_num(-1,2,abs)
高阶函数的意义在于使代码更加简洁,减少代码重复率
内置高阶函数
map()
def func(x):
return x * 2
list1 = [1, 2, 3, 4]
result = map(func,list1)
print(result)
print(list(result))
结果为:
<map object at 0x1037f27b8>
[2, 4, 6, 8]
map(func,lst),将函数变量func作用到lst变量的每个元素中,并返回一个迭代器(python2返回的是列表),想要得出结果列表,转成列表格式即可
reduce()
import functools
def func(a,b):
return a + b
list1 = [1, 2, 3, 4]
result = functools.reduce(func,list1)
print(result)
结果为:
10
reduce(func(x,y), lst),其中func必须有两个参数。
在使用reduce()函数时,需要先导包
每次计算的结果继续和序列的下个元素做累积计算
reduce()传入的参数必须接受2个参数
filter()
def func(x):
return x % 2 == 0
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = filter(func,list1)
print(result)
print(list(result))
结果为:
<filter object at 0x10fce37b8>
[2, 4, 6, 8]
filter(fun,lst) 函数用于过滤序列,过滤掉不符合条件的元素,并返回一个迭代器,如果想要列表,可以使用list()进行转换