高阶函数:就是把函数当成参数传递的一种函数
1、函数名可以进行赋值;
2、函数名可以作为函数参数,还可以作为函数的返回值;
a、函数是第一类对象
b、函数可以被赋值
c、可以被当做参数
d、可以当做返回值
e、可以作为容器类型的元素
def f(n): return n*n def foo(a,b,func): ret = func(a) + func(b) return ret foo(1,2,f) print(foo(1,2,f)) #传入参数a=1,b=2,func=f; #ret = f(1) + f(2); #f(1)=1,f(2)=4此时调用f函数; #ret=5;
map函数:
描述
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
语法
map() 函数语法:
map(function, iterable, ...)
参数
- function -- 函数
- iterable -- 一个或多个序列
返回值
Python 2.x 返回列表。
Python 3.x 返回迭代器。
实例
>>>def square(x) : # 计算平方数 ... return x ** 2 ... >>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方 [1, 4, 9, 16, 25] >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数 [1, 4, 9, 16, 25] # 提供了两个列表,对相同位置的列表数据进行相加 >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [3, 7, 11, 15, 19]
msg = [1,12,33,42,15,16] #需求自增1 def add_one(x): return x+1 #需求自减1 def reduce(x): return x-1 #需求平方 def pf(x): return x**2 #实现逻辑 def fangfa(func,red): ret = [] for i in red: res = func(i) ret.append(res) return ret print(fangfa(add_one,msg)) print(fangfa(reduce,msg)) print(fangfa(pf,msg)) print(fangfa(lambda x:x+1,msg)) #用lambda函数替换add_one函数 print(fangfa(lambda x:x-1,msg)) #用lambda函数替换requce函数 print(fangfa(lambda x:x**2,msg))#用lambda函数替换pf函数 print(list(map(lambda x:x+1,msg))) #map处理的结果是一个可迭代对象,python3中需用list转换; print(list(map(lambda x:x-1,msg))) #map的第一个参数是逻辑,第二个参数是可迭代对象; print(list(map(lambda x:x**2,msg)))