这是我参与8月更文挑战的第27天,活动详情查看:8月更文挑战
⭐8月更文挑战第27天⭐,和小伙伴们一起复习巩固Java😁
Code皮皮虾 一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm...,日子还很长,让我们一起加油努力叭🌈
欢迎各位小伙伴们关注我的公众号:JavaCodes,名称虽带Java但涉及范围可不止Java领域噢😁,会长期分享博文或者福利,期待您的关注❤
😉毛遂自荐
毛遂自荐,给大家推荐一下自己的专栏😁,欢迎小伙伴们收藏关注😊
前言
高阶函数是在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)
❤最后
我是 Code皮皮虾,一个热爱分享知识的 皮皮虾爱好者,未来的日子里会不断更新出对大家有益的博文,期待大家的关注!!!
创作不易,如果这篇博文对各位有帮助,希望各位小伙伴可以==一键三连哦!==,感谢支持,我们下次再见~~~