前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实用高阶函数map,reduce,filter

实用高阶函数map,reduce,filter

作者头像
@小森
发布2024-03-15 11:09:49
820
发布2024-03-15 11:09:49
举报
文章被收录于专栏:xiaosenxiaosen

map函数

来看一下map函数的参数与返回值

代码语言:javascript
复制
map(func, *iterables) --> map object

func:代表传入参数为函数,这里的函数指定指向函数的函数名, *iterables:代表参数指定的可迭代的, 返回值:返回处理好的数据 map()函数:是将传入的func函数作用于,可迭代的数据里面每个元素,并将处理好的新的结果返回

代码语言:javascript
复制
>>> def fun_a(x):
...   return x * 10
...
>>> list_a = map(fun_a, [1, 2, 3, 4, 5])
>>> list(list_a)
[10, 20, 30, 40, 50]

map() 传入的第一个参数是 fun_a ,即函数对象本身。

print(map(str, [1, 2, 3, 4, 5])) 打印结果为:  <map object at 0x00000195929E5AC0> 所以要将其转化为list类型

很多情况下,也可以使用for循环也可以解决问题,但实际上map作为高级函数,将运算抽象化,还可计算复杂的函数,例如将列表的元素int类型转换为int类型,只需要一行代码:

代码语言:javascript
复制
>>> list(map(str, [1, 2, 3, 4, 5]))
['1', '2', '3', '4', '5']

reduce函数

注意使用reduce函数时需要先导入,reduce函数是在 functools模块里面的;

代码语言:javascript
复制
from functools import reduce
reduce(function, sequence[, initial]) -> value

function:一个有两个参数的函数 sequence:是一个序列,是一些数据的集合,或者是一组数据,可迭代对象 initial:可选,初始参数 返回值:返回函数计算的结果 reduce()函数,使用function函数(有两个参数)先对集合中的sequence第 1、2 个元素进行操作,如果存在 initial参数,则将会以sequence中的第一个元素和initial作为参数,用作调用,得到的结果再与sequence中的 下一个数据用 function 函数运算,最后得到一个结果。

代码语言:javascript
复制
from functools import reduce
list_a = [1, 2, 3, 4, 5]
def fun_b(x, y):
  return x + y
print(reduce(fun_b, list_a))
# 运算结果如下
15

依次按照顺序从列表list_a中提取两个元素作为参数,进入fun_b中进行运算,得到的结果,作为下次运算时的其中一个参数,再从列表中取出一个元素,再进行运算。最终得到的结果是总和的计算。

filter函数

Python内建的 filter() 函数用于过滤序列,和 map() 类似, filter() 也接收一个函数和一个序列 但是不同的是 filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定元素的保留与丢弃; 看一下filter的参数:

filter(function, iterable)

function:判断函数。 iterable:序列,(可迭代对象)。 返回值:返回列表 filter函数,序列(可迭代对象)的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中 。

代码语言:javascript
复制
def not_odd(num):
  return n % 2 == 0
newlist = filter(not_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(list(newlist))    # 否则为<filter object at 0x0000017B601C6F40>对象
# 运算结果
[2, 4, 6, 8, 10]

这里filter函数的两个参数第一个是过滤方法,第二个是需要过滤的列表,将列表里面的元素依次带入函数中进行运算,得到的结果如果为True时,将此结果作为新的filter对象保留,等待函数里面的列表执行完成后,返回最终的值,这里的值为列表,也就是过滤掉了False的数据或元素。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • map函数
  • reduce函数
  • filter函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档