python学习笔记-高阶函数
需求:任意两个数字 按照指定的要求整理数字之后再进行求和运算
方法一、
Def add_num(a,b):
Return abs(a) + abs(b)
Result = add_num(-1,2)
Print(result)
方法二、
def sum_num(a,b,f):
return f(a) + f(b)
result = sum_num(1,2,abs)
print(result)
方法二的代码更加简洁,函数的灵活性更强,将高阶函数作为形参传入函数
1. map(func,list)
作用:将传入的func作用于list中的每一个元素中,并且将结果做成新的列表(python2)or 迭代器(python3)返回
需求:计算list1中的每一个数字的平方和
list1= [1,2,3,4,5]
def func(x):
return x**2
result1 = map(func,list1) #返回一个迭代器
print(result1) #打印的只是内存地址
print(list(result1)) #打印的是列表
2. reduce(func,list)
这里要求func必须要有两个参数,每次func计算的结果继续和序列中的下一个元素进行累积计算
注意:reduce传入的func必须要有两个参数,且需要导入functools模块
import functools
list1 = [1,2,3,4,5]
def func(a,b):
return a + b
result2 = functools.reduce(func,list1)
print(result2)
3. filter(func,list)
过滤掉不符合条件的元素,返回一个filter的对象,如果要转换成列表可以使用List进行转换
这里的func就是充当筛选条件 true or flase
list2 = [1,2,3,4,4,5,6,6,7,7]
def func(x):
return x % 2 == 0
result = filter(func,list2)
print(result)
print(list(result))