快速带你了解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)

在这里插入图片描述


博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!

更多博主开源爬虫教程目录索引(宝藏教程,你值得拥有!)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/llllllkkkkkooooo/article/details/108520107
今日推荐