快速带你了解Python高阶函数
前言
高阶函数是在Python中一个非常有用的功能函数,所谓高阶函数就是一个函数可以用来接收另一个函数作为参数,这样的函数叫做高阶函数。
高阶函数简单理解
提起abs相信大家都不会陌生,无论是在C、java或者其他语言中,相信大家或多或少都用过、见过,在python语言中,abs()是它的内置函数,用来求一个数值的绝对值
print(abs(-2))
abs是这个函数的名称,但加上**()**才能表示为一个函数
fun = abs
print(fun(-3))
可以看到,我们求值成功,这说明了单纯的abs指向了该方法的内存地址,我们可以把它赋值给一个其他的变量,如上赋值给fun,这样fun也指向了跟abs一样的内存地址,这样在fun后加上**()可起到跟abs()**一样的的作用。
所以,函数名也是变量,函数可以被当做参数传入函数,那么一个函数就可以接收另一个函数作为参数,这种函数就被称之为==高阶函数==。
1、lambda()
==定义多个参数==
此函数适用于简单函数,如果需要定义复杂函数,则还是使用==def==
2、map()
==map定义==
map()是 Python 内置的高阶函数,它接收一个函数function 和一个 list,并通过把函数 function 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
items = [1,2,3,4,5]
def f(x):
return x**2
print(list(map(f,items)))
==注意==:map() 函数不改变原有的 list,而是返回一个新的 list。
==map与lamdba结合使用==
items = [1,2,3,4,5]
print(list(map(lambda x:x**3,items)))
3、reduce()
==reduce定义==
reduce() 函数接收的参数和 map() 类似,一个函数 f,一个 list,但行为和 map() 不同,reduce() 传入的函数 f 必须接收两个参数,reduce() 对 list 的每个元素反复调用函数 f,并返回最终结果值。
==注意==:在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里, 要使用的话要 先引入from functools import reduce
# 从functolls模块中导入reduce函数
from functools import reduce
items = [1,2,3,4,5]
def f(x,y):
return x+y
result = reduce(f,items)
print(result)
上面调用reduce函数,由于f函数返回值为两个参数的和
第一次调用:f(1,2),返回值为3
第二次调用:f(3,3),返回值为6
第三次调用:f(6,4),返回值为10
第四次调用:f(10,5),返回值为15
from functools import reduce
items = range(1,101)
def f(x,y):
return x+y
result = reduce(f,items)
print(result)
from functools import reduce
items = ['a','b','c','d']
def f(x,y):
return x+y
result = reduce(f,items)
print(result)
4、filter()
filter() 又可以叫做过滤函数,它接收一个函数 f 和一个 list,这个函数 f 的作用是对每个元素进行判断,返回 True 或 False,filter() 根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新 list。
data = list(filter(lambda x:x%2==0,range(21)))
print(data)
博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!
- 点赞
- 收藏
- 关注作者
评论(0)