【Python函数与模块学习记录5】进阶:常用高阶函数

1、什么是filter函数

1.1 lambda函数

Lambda函数是一种内嵌的表达式,创建内嵌的简单匿名函数

- lambda函数又称为lambda表达式,可定义一种无函数名的匿名函数

- 主要用来处理简单的业务逻辑,如加法,取绝对值,过滤等

- 函数体的语句只可以为单行,提高运行效率,不可以跨行定义,不是代码块

- 能接收任何数量的参数,但只能返回一个表达式的值

 

1.2 filter函数的使用

1)返回一个filter对象,其中包含对其执行函数时结果为真的所有元素

2)filterfunc,seq(方法签名-传递什么样的参数), 接收两个参数,第一个参数是过滤条件,可以是匿名函数或者自定义函数,第二个参数为数据容器(可迭代对象),用来装载要进行过滤的所有数据

3)是过滤器,是python内置的高级函数之一,用来对指定数据过滤       

2、什么是map函数

2.1 map(func, seq),将传入的函数依次作用到序列的每个元素,并把结果返回

2.2 map()函数中传入的列表多于一个时,map()函数可以并行执行

eg

map(lambda x , y:x*y ,[3,5],[3,5]) 即是[3*3,5*5] ---->[9, 25]

eg

l1 = map(str, [1,2,3,4])

print(list(l1))

运行结果: ['1', '2', '3', '4']

该程序实现的效果是把列表中的数字1234转换成字符串1234map()函数中传入的函数是内置函数str(字符串转换),程序在编写及执行时是不会报错的       

1、什么是reduce函数

reduce函数:

- 使用指定的函数将元素的前两个元素合二为一,再将结果与第三个元素合二为一,依此类推,直至处理完整个序列并得到一个结果

- reduce(func, seq[,initial])

- 等价于 func(func(func(seq[0],seq[1]),seq[2]),...)

- 接收两个参数,一个是函数名,一个是序列, 按照给定的方法把参数中的序列缩减为单个值,并把结果返回, 返回的并非是reduce类型,而是序列元素类型

- 使用reduce函数需先导入,from functools import reduce

2、filtermapreduce函数的区别

4.1 map() :参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值。

 

4.2 filter():用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True False,最后将返回 True 的元素放到新列表中。

 

4.3 reduce() 函数是对参数序列中元素进行累积,是用传入的函数 function(有两个参数)先对集合中的第 12 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

 

4.4 map()函数是对每次执行函数后的结果都进行返回,而reduce()最终是得到一个结果。filter()是过滤掉不符合条件的元素,将返回True的元素放到新列表中。三者是有很明显的区别的。    

posted @ 2021-05-26 22:08  钟胜一  阅读(45)  评论(0编辑  收藏  举报