Python_高阶函数
1.体验高阶函数
# abs():对数字求绝对值
print(abs(-2)) #2
#round():求数字求四舍五入
print(round(1.6)) #2
print(round(1.3)) #1
需求:任意两个数字,按照指定要求整理数字后再求和
- 方法一:
def add_num(a,b):
return abs(a)+abs(b)
result=add_num(-1,-2)
print(result) #3
- 方法二:
def add_num(a,b,f):
return f(a)+f(b)
result1=add_num(-1,-2,abs)
print(result1) #3
result2=add_num(1.3,1.4,round)
print(result2) #2
result3=add_num(1.3,1.7,round)
print(result3) #3
2.内置高阶函数
2.1 map()
map(func,lst),将传入的函数变量func作用到lst变量的每个元素中。
# 需求:计算list1序列中各个数字的2次方
list1=[2,4,6,8]
def func(x):
return x**2
result=map(func,list1)
print(result) #输出内存地址
print(list(result)) #[4, 16, 36, 64]
2.2 reduce()
reduce(func,list),其中func必须有两个参数,每次func计算的结果继续和序列的下一个元素做累积计算。
# 需求:计算list2序列中各个数字的累加和
import functools
list2=[1,2,4,5,6]
def func(a,b):
return a+b
result=functools.reduce(func,list2)
print(result) #18
2.3 filter()
filter(func,list)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换为列表,可以使用list()来转换。
# 需求:求序列中的偶数
list3=[1,2,3,4,5,6,7,8,9,20]
def func(x):
return x%2==0
result=filter(func,list3)
print(list(result)) #[2, 4, 6, 8, 20]