体验高阶函数
把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式
abs()
abs()函数可以完成对数字求绝对值计算
res = abs(-100)
print(res)
输出:100
round()
round()函数可以完成对数字的四舍五入计算
num1 = round(1.9)
num2 = round(1.2)
print(num1)
print(num2)
输出:
2
1
实例
def sum_num(a, b, c):
return c(a) + c(b)
res = sum_num(-1, 5, abs)
print(res)
输出:6
内置高阶函数之map
map(func,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(python2)/迭代器(python3)返回
需求
计算list1序列中各个数字的2次方
代码实现
list1 = [1, 2, 3, 4, 5]
def func(x):
return x ** 2
result = map(func, list1)
print(result)
print(list(result))
输出:
<map object at 0x10b34efa0>
[1, 4, 9, 16, 25]
内置高阶函数之reduce()
reduce(func, lst),每次func计算的结果继续和序列的下一个元素做累计计算
注意:reduce()传入的参数func必须接受两个参数
需求
计算list1序列中各个数字的累加和
代码实现
list1 = [1, 2, 3, 4, 5]
import functools
def func(a, b):
return a + b
result = functools.reduce(func, list1)
print(result)
输出:15
内置高阶函数之filter()
filter(func, lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换成列表,可以使用list()来转换
需求
list1序列中的偶数
代码实现
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
def func(f):
return f % 2 == 0
result = filter(func, list1)
print(result)
print(list(result))
输出:
<filter object at 0x104363fa0>
[2, 4, 6, 8]