Python 高阶函数:一文搞透 map()、reduce()、filter()

用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式) 【代码】用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式) 阅读详情

0. 写在前面

首先 要知道map()、reduce()、filter()属于高阶函数;
其次要知道它们属于函数式编程的范式;
最后来看一下它们具体的概念和用法。

若前两点有不明白的,可以看之前的文章:Python从基础到进阶——「函数&函数式编程」
下面开始直接上干货。

1. map

概念和代码

# map(function, iterable) -> iterator
# map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
def map_fc(func, iter):
    '''
    这个函数只是为了下面的几行备注
    :param func: 函数(function),匿名函数在这里发挥了它的作用
    :param iter: 可迭代对象(iterable),所以不仅仅是列表
    :return: iterator(惰性序列),所以需用list转换为list类型
    '''
    return map(func, iter)


func = lambda x:x**2 - 1
iter = [1, 2] # 第二个参数是iterable,因此使用 range(1, 3)也是一样的

map_result = map_fc(func, iter)
print(map_result)
print(list(map_result))

结果:

<map object at 0x10e571208>
[0, 3]

注意事项:Python3 以后,返回值是iterator(惰性序列),所以需用list()将结果转换为list类型

本质理解

map(function, iterable) -> iterator
在这里插入图片描述
将函数作用于可迭代对象中的每一个元素。

2. reduce

概念和代码

# reduce(function, iterable) -> value
# reduce把一个函数作用在一个可迭代对象,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
from functools import reduce # 注意:reduce() 从python 3 开始移到了 functools 模块

def reduce_fc(func, iter):
    '''
    这个函数只是为了下面的几行备注
    :param fuc: 函数(function)
    :param iter: 可迭代对象(iterable)
    :return: value
    '''
    return reduce(func, iter)

func = lambda x, y:x+y
iter = [1, 1, 2, 2]

reduce_result = reduce_fc(func, iter)
print(reduce_result)

结果:

6

注意事项:返回值直接是value

本质理解

reduce(function, iterable) -> value
在这里插入图片描述
就是对一个序列的每个项迭代调用函数。首次执行如果没有指定则默认取第一个元素作为startValue,而第2个元素作为第二个参数,然后执行后的结果则作为下一次执行的第1个元素,以此类推

3. filter

概念和代码

# filter(function, iterable) -> iterator
# filter 将可迭代对象中的每一个元素,传递给函数进行判断,最后返回结果为True的元素组成的一个iterator
def filter_fc(func, iter):
    '''
    这个函数只是为了下面的几行备注
    :param func: 函数(function)
    :param iter: 可迭代对象(iterable)
    :return: iterator(惰性序列)
    '''
    return filter(func, iter)

func = lambda x: isinstance(x, str)
iter = [1, 'Robin', (2, 4)]

filter_result = filter_fc(func, iter)
print(filter_result)
print(list(filter_result))

结果:

<filter object at 0x10e5b0390>
['Robin']

注意事项:Python3 以后,返回值是iterator(惰性序列),所以需用list()将结果转换为list类型

本质理解

filter(function, iterable) -> iterator
在这里插入图片描述
返回经过函数判断结果为True的那些元素组成的iterator(删除了结果为False的那些元素)

4. 后续思考:why?

其实用一个循环也可以做的事情,为什么还要重新定义一个专门的函数?
——函数式编思维

更多参考:Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)…啊啊啊——写的很不错!

Python中强大的函数: map()、filter() 和 reduce() 概述 Python 包含许多预定义的内置函数,最终用户可以通过简单地调用它们来使用它们。这些功能不仅使程序员的工作更轻松,而且有助于建立一个通用的编码环境。在本教程中,您将了解 Python 的三个最强大的函数:map()、filter() 和 reduce()。 函数式编程的三大支柱是 map、filter 和 reduce 函数。虽然 Python 不完全是一种函数式编程语言,但它确实有很多特性使它如此。本文讨论了 Python 中的 map、filter 和 reduce 函数,以及它们如何对应于函数 阅读详情

相关推荐

Python 中内置的高阶函数:map()、filter() 和 reduce()

map()map()filter()和reduce()是 Python 中内置的高阶函数,它们可以用于处理可迭代对象(如列表、元组等)中的元素。`map()` 函数将一个函数应用于可迭代对象的所有元素,并返回一个迭代器,其中包含该函数应用于每个元素的结果。`filter()` 函数使用一个函数过滤可迭代对象中的元素,并返回一个迭代器,其中包含使该函数返回 `True` 的所有元素。`reduce()` 函数将一个二元函数应用于可迭代对象的元素,以连续地将元素“归约”为单个值。

qq_53810226的博客 530

第6

第三十四节:二阶偏导数练习,多元函数的全微分及可微的形式 第三十五节:多元函数可微的必要条件、充分条件 第三十六节:多元函数全微分在近似计算中的应用,多元复合函数求偏导法则 第三十七节:对多元复合函数求偏导的理解及例题 第三十八节:多元函数全微分的一阶形式不变形及例题,方程确定多元函数的概念 第三十九节:方程确定多元函数求偏导的方法及例题 矢量代数与解析几何 ...

Major_S的博客 348

Unity获取透明物体深度数据

Unity获取透明物体深度数据前言透明&景深需求模型透明度部分带透明通道图片/视频部分半透明模型获取深度的具体实现方法带透明度图片/视频获取深度的具体实现方法结束语 前言 最近在做的项目有很多奇怪的需求,甚至之前在unity里用插件写了一个类似于蓝图的行为树插件,之后有时间给大家讲一讲相关的实现方法,今天刚解决了unity里透明物体无法获得深度数据的问题。所以分享给大家。 透明&景...

可以吃的妙脆角的博客 2632

Python 笔记(07)— 高阶函数 filter、map、reduce、reversed、sorted、iter 及内置函数 zip、enumerate

1. filter(function, iterable) 过滤器,过滤掉不满足函数 function 的元素,重新返回一个新的迭代器。 其中 function 函数的第一个参数是可迭代对象 iterable 中的一个元素,也就是说函数 function 依次接收 iterable 可迭代对象的每一个元素,并判断每一个元素是否符合 function 的条件。 In [29]: a = [1,......

wohu1104的专栏 545

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

weixin_44240228的博客 1万+

记一次从零到getshell的渗透历程

0x00 前期 拿到测试范围清单后,首先用脚本获取了下各个子站的标题,基本都是XXX管理系统。浏览器查看后,各个子站也大同小异,纯登录系统,带验证码。这些系统基本都是jsp写的,逮到了两个没有验证码的小宝贝,一番暴力破解,小宝贝对我说:别爱我,没结果。又看到了两个站返回的Set-Cookie头:rememberMe=deleteMe; 很明显,这是Apache Shiro。打了一波exp,没有反应,放弃。搞了三天啥都没搞出来,和女朋友出去玩散散心,还是很高兴。 0x01 初显进展 测试范围内有六个门户

CanMeng'Blog - 一个WEB安全渗透的技术爱好者 3969

如何使用Python中的map()、filter()和reduce()函数

是内置的高阶函数(或称为函数式编程工具),它们允许你对可迭代对象(如列表、元组等)进行批量操作。函数接受一个函数和一个或多个可迭代对象作为输入,并返回一个迭代器,该迭代器包含将函数应用于每个可迭代对象的元素后得到的结果。函数接受一个二元函数和一个可迭代对象作为输入,并返回一个单一值,该值是通过对可迭代对象的元素连续应用函数来计算的。函数接受一个函数和一个可迭代对象作为输入,并返回一个迭代器,该迭代器包含对可迭代对象中的每个元素应用函数后返回。定义一个函数,用于计算两个数的和。定义一个函数,将输入的数乘以。

2402_84885073的博客 593

Eureka常见面试题总结

点击关注我的博客原文 Eureka是Netflix组件的一个子模块,也是核心模块之一。云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移(来源springcloud中文网的介绍:https://www.springcloud.cc/)。下图总结了Eureka服务端(以下简称服务端)与Eureka客户端(以下简称客户端)之间协同工作的流程: 流程说明:...

u012105931的博客 2万+

上三角九九乘法表python_Python实现不同格式打印九九乘法表

1.长方形完整格式代码如下:#完整格式输出九九乘法表for i in range(1,10):for j in range(1,10): print("{}*{}={}".format(j,i,i*j),end=" \t") print("")输出结果:2. 左上三角形代码如下:#左上三角格式输出九九乘法表for i in range(1,10): for...

weixin_29538497的博客 7183

ISP之LSC(Lens Shading Correction)

LSC - Lens Shading Correction即镜头暗影校正。

IQ_WXY的博客 5098

CNC数控机床数据采集,CNC数据采集 设备联网 车间数字化

cnc数据采集 cnc机床数据采集 免受权采集 设备联网

weixin_38175277的博客 2773

python高阶函数(abs()、round()、map()、reduce()、filter())

python高阶函数(abs()、round()、map()、reduce()、filter())

IT之一小佬的博客 3648

90. 将 SAP ABAP 内表内容本地导出成 Excel 文件

这里文件扩展名为 csv,全称是 Comma-Separated Values,意思是这种类型的文件内容,由逗号分隔。除了 ASC 之外,另一个可用的选项是 BIN,适用于 PDF,EXE 等二进制文件的导出。支持海量的输入和输出参数,我们这个简单的本地导出场景里,大部分参数都用不上。这个分隔符的添加逻辑,编写在上图红色高亮矩形框内,使用的语法是。本教程有学习者向我提问,询问如何将 ABAP 某某函数的某某输出参数的值,导出成本地 Excel 文件。把这个内表的内容,下载到本地,以本地文件的方式保存。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1743

【python】Python 高阶函数map、reduce、filter、sorted

高阶函数(Higher-Order Function)是指能够接收函数作为参数,或者将函数作为返回值的函数。Python 内置了多种高阶函数,它们为我们提供了编写简洁代码的能力。lambda高阶函数为我们提供了一种优雅的方式来处理可迭代对象。通过合理运用mapreducefilter和sorted,我们可以编写出更加简洁和高效的 Python 代码。lambda表达式的配合使用,更是让代码显得简洁且富有表现力。

longforone的博客 1923

logisim中,如何设计一个位于十字路口的交通信号灯控制系统?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1345

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python常用高阶函数:map()、filter()、reduce()

通过使用这些高阶函数,可以将对数据的常见操作(如转换、筛选、累计)表达得更加直接、简洁,从而提高代码的可读性和可维护性。函数用于对可迭代对象中的元素进行累计操作,它会将第一个元素和第二个元素传递给指定的函数进行计算,计算结果再与第三个元素继续计算,依次类推,直到得到一个最终的结果。函数用于将指定的函数应用到可迭代对象的每一个元素上,生成一个新的可迭代对象。函数用于筛选可迭代对象中的元素,它根据指定的函数对每个元素进行判断,返回。列表的每一个元素,生成一个新的列表,其中每个元素的值都是原来的2倍。

分享人工智能领域原创文章 1380

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python3中一些高阶函数map、reduce、filter详解及示例

在编程语言中,高阶函数指的是接受函数作为输入或输出的函数。 map概述 python中的map()函数是一个内置的高阶函数,一般用法是map(function, iterable)。需要传入一个函数,这个函数可以是内置的,也可以是自己定义,也可以是匿名函数即lambda。第二个参数是一个可迭代对象,如列表、字典字符串等。map函数返回的是一个map对象,也是一个可迭代对象,可以利用for循环迭...

若数的博客 1630

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[Python] 函数lambda(), filter(), map(), reduce()

1、lambda() lambda()是Python里的匿名函数,其语法如下: lambda [arg1[, arg2, ... argN]]: expression 下面是个1+2=3的例子 >>> fun = lambda x,y:x+y >>> fun(1,2) 3 >>> (lambda x,y:x+y)(1,2) 3 2、filter() filter(fun

Zhu_Julian's Notes (朱显杰的技术博客) 2万+

不得不知的python高阶函数(Map、Reduce、Filter)

Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。 Reduce函数 reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。 Filter函数 filter()函数用于过滤序列

sky_F的博客 7325

python的几个内建函数:apply(),filter(),map(),reduce()

apply()函数: apply(func[,nkw][,kw]) 它的返回值就是func函数的返回值filter()函数:  filter(func,seq) 调用bool函数func,遍历处理序列中seq的每个元素。它的返回值是一个序列,其元素都是让func函数返回true值的原seq序列中的元素map()函数:def map(func,seq):    mapped_seq =

Technology+Communication+Fashion 1万+

Python中强大的函数: map(), filter()和 reduce()

map()filter(), 和reduce()是Python中强大的函数,它们提供了一种便捷的方式来处理可迭代对象中的元素。这些函数在许多编程任务中都非常有用,包括数据转换、筛选和累积操作。熟练掌握这些函数可以让Python编程变得更加高效和简洁。

aobulaien001的博客 927

Python 高阶函数的使用之 map、filter 和 reduce

在 Python 中,高阶函数(Higher-Order Functions) 是指能够接受一个或多个函数作为参数,或者返回一个函数的函数。高阶函数能够让代码更加简洁、优雅,提高可读性和开发效率。Python 提供了多个常用的高阶函数,其中 `map()`、`filter()` 和 `reduce()` 是三种非常重要的函数式编程工具,分别用于映射、过滤和归约操作。本文将详细介绍它们的用法,并结合实际案例来展示如何利用这些函数简化代码。

945

9️⃣高阶函数:map()、reduce()、filter()、sorted()

本文介绍了Python中四个常用的高阶函数:map()、reduce()、filter()和sorted()。map()用于元素级变换,reduce()用于累积规约,filter()用于过滤元素,sorted()用于自定义排序。文章通过具体示例展示了每个函数的用法,包括数字平方、序列求和、素数生成、字符串排序等常见操作。同时提供了练习题和延伸阅读推荐,帮助读者掌握这些高阶函数的应用场景和使用技巧。这些函数能以简洁的方式处理序列操作,提高代码的可读性和效率。

weixin_67251822的博客 521

Python函数式编程-map()、zip()、filter()、reduce()、lambda()

三个函数比较类似,都是应用于序列的内置函数。常见的序列包括list、tuple、strmap函数map函数会根据提供的函数对指定序列做映射。map函数的定义:map(function, sequence[, sequence, ...]) -> listmap()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。1、当seq只有一个时

jiandanjinxin的专栏 1539

python中高阶函数sorted(),map(),reduce(),fliter()

【代码】python中高阶函数sorted(),map(),reduce(),fliter()

m0_52951519的博客 1056

python高阶函数map()、filter()、zip()、enumerate()、reduce()

高阶函数:能接受函数做参数的函数 常见的高阶函数: 1、map() 根据提供的函数对指定序列做映射 语法: map(function,iterable) 参数: function–函数 iterable – 一个或多个序列 返回值: python 2.x 返回列表 python 3.x 返回迭代器 示例: >>>def square(x): >>> ...

holiday0的博客 459
上一篇: MapReduce 以及 Python中的Map和Reduce
下一篇: 命令行运行带参数的Python脚本:sys.argv
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值