python高阶函数、map reduce 自己如何去定义_小猿圈python之高阶函数lambda、map和reduce用法...

python有很多内置函数,内置函数封装了很多功能,让我们用起来很方便,小猿圈针对高阶函数有详细的讲解视频,朋友们可以去看看,小编学后总结了一下,下面说一下lambda、map和reduce高阶函数的用法。

1、lambda函数

lambda是匿名函数,lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值(相当于return)。

lambda语句构建的其实是一个函数对象,感受一下 lambda 匿名函数和普通函数的区别:

--普通函数:

1 def f(i): # 用户自定义返回平方数

2 return ii

3 print(f(2))

--匿名函数

g = lambda x : xx # lambda 匿名函数

print(g(2))

看出来区别了吗? lambda 函数和普通的函数相比,就是省去了函数名称,同时这样的匿名函数,不能共享在别的地方调用,也有很多别的方法能够代替lambda,那lambda函数有什么优点呢?

省去定义函数的过程,快速定义单行的最小函数,让代码更加精简

不需要复用的函数,无须定义函数名称

和 filter map reduce 结合使用,更优雅

lambda 函数可包含多个参数,例如:

1 def f(x,y):

2 return x+y

3 print(f(1,4))

4 g = lambda x,y : x+y

5 print(g(1,4))

2、map函数

map()函数接收两个参数,一个是函数,一个是可迭代对象(Iterable),map将传入的函数依次作用到序列的每个元素,并把结果作为新的可迭代对象返回。

实例:

L=[1,2,3,4]

def pow2(x):

return x*x

list(map(pow2,L))

运行结果:[1,4,9,16]

map和lambda匿名函数一同使用:

list(map(lambda x:x**2,[1,2,3,4,5]))#使用lambda匿名函数

3、reduce函数

reduce 函数在 3.x 版本不是内建函数了,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里,用的话要 先引入

from functools import reduce

reduce 函数中的function参数是一个有两个参数的函数,reduce依次从 sequence 中取一个元素,和上一次调用 function 的结果做参数再次调用function。

例如:

1

2 from functools import reduce # 3.x 版本须引入

3 def sum_a(x,y):

4 return x+y

5 l = [1,2,3,4,5,6]

6 l = reduce(sum_a,l)

7 print(l)

结果:21

l = [1,2,3,4,5,6]

l = reduce(lambda x,y:x+y,l) # 结合lambda

print(l)

help(reduce) # 查看 reduce 帮助

这三个个高阶函数运用的地方也很多,一般匿名函数lambda和map、filter、reduce组合用的比较多,这只是简单的用法,想要深入了解高阶函数,可以去小猿圈学习一下,alex老师讲的很透彻,小编听后做的总结,有问题可以给小编留言,我们可以探讨学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVAWEB入门之IDEA与tomcat相关配置

IDEA与tomcat相关配置 IDEA会为每一个tomcat部署的项目单独建立一份配置文件,查看启动项目后的控制台的log:Using CATALINA_BASE: "C:\Users\14811\.IntelliJIdea2017.1\system\tomcat\_test2"打开这个文件路径后,我们发现里面有…

mysql 自增id replace_MySQL--REPLACE INTO与自增

####测试环境:MySQL版本:MySQL 5.7.19复制模式:ROW####执行下面操作:##测试脚本:CREATE TABLET_AUTO_TEST(IDINT AUTO_INCREMENT PRIMARY KEY,C1INT NOT NULL,UNIQUE KEYUNI_C1(C1))INSERT INTO T_AUTO_TEST(ID,C1)VAL…

JAVAWEB入门之Servlet_体系结构

我们建的这个类要继承复写Servlet的所有方法,但是这会很麻烦,所有的写出来很繁琐当摆设,所以我们想,可不可以定义一个类,然后继承这些类和方法, Servlet的体系结构, Servlet----接口----爷爷 …

mysql语句怎么记_mysql语句记录

INSERT INTO as_devconfig_9300(DevID,MonID, vc_Name,i_DevType,vc_Param2) VALUES(1111,18,衡阳.110kV狮子山变电站/变电站周界.站区风速传感器/站区气象风速测量值,1,0);UPDATE as_devconfig_9300 SET vc_Name2,i_DevType1 WHERE MonID2;SELECT LinkID FROM as_linkinfo WHE…

JAVAWEB入门之Servlet相关配置

1.urlpattern:Servlet的访问路径 一个Servlet可以定义多个访问路径:WebServlet({"/d","/dd","/ddd"}),可以同时访问路径的定义规则1./XXX/XXX/XXX 多层路径,称之为目录结构/XXX/* 通配符号* 表示什么都可以写*.do …

mysql 控制id复原_清空mysql表后,自增id复原

一、清除mysql表中数据deletefrom表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数…

JAVA入门级教学之HTTP

HTTP概念:Hyper Text Transfer Protocol 超文本传输协议 传输协议:定义了客户端和服务器端通信时发送数据的格式 特点:1.基于TCP/IP的高级协议,要经过三次握手,说明也是一种安全的协议 2.默认端口号是80 http://…

mysql 取年月日 语句_MySQL学习从这里出发!

MySQL数据库开发学习中,想满足一些需求,无疑需要经常与数据打交道,例如,我们在使用IO的一些技术的时候,常常需要将一些数据存储到外部文件,可能大家会问,我们初学的时候常常会简单的保存一些数据…

JAVAWEB入门之Requset原理

Request 1.request和respinse对象的原理 request和respinse对象是由服务器创建的,我们只是使用他们 request对象是来获取请求消息,response是来设置响应消息 3.request对象的继承体系结构: ServletRequest-------接口 继承 HttpServlet…

mysql 抓包乱码_mysql知识资源收集

收集一下mysql所需的文档,供后面查阅和学习。整理了下,大致需要如下的一些:一.基础知识,包括安装,基础命令使用等基础知识命令行大全:图形大纲:二.mysql库中表对应的作用和字段作用三.mysql配置…

JAVA入门级教学之(数据类型)

目录 JAVA入门级教学之(数据类型) 1、数据类型的作用是什么? 2、java中的数据类型包括两种: 3、关于基本数据类型: 4、注意:字符串"abc"不属于基本数据类型,属于【引用基本类型】&…

mysql存储过程中as_mysql - 存储过程mySQL语法错误意外“ AS” - 堆栈内存溢出

我正在编写一个存储过程,如下所示我得到的错误是在第3行和第4行,这两个错误是第3行是“意外的发布者标识符”,第4行是“意外的AS(as)”,但我不知道我是怎么得到这些错误或如何解决的他们。 有人可以解释一下为什么我收到这些错误以…

JAVA入门级教学之(char类型)

java程序主要讲解的数据类型之:char类型【占用2个字节】 public class DateTypeTest02 {public static void main(String[] args){//定义一个char类型的变量,起名c,同时赋值字符achar ca;System.out.println(c);//a//一个中文占用2个字节,所…

JAVA入门级教学之(整数型)

关于java语言中的整数型: 数据类型 占用空间大小 默认值 取值范围byte 1 0 【-128-127】 short 2 0 【-32768-32767】 int…

mysql事务编号_Mysql事务

一:mysql事务1.需求从orders表中查询最新的销售订单编号,并使用下一个销售订单编号作为新的销售订单编号。在指定客户的orders表中插入新的销售订单。将新的销售订单项目插入orderdetails表中。从orders表和orderdetails中获取数据以确认更改。如果由于数…

JAVA入门级教学之(浮点型数据类型)

/* 关于浮点型数据类型: float 单精度 【4个字节】 double 双精度 【8个字节,精度较高,默认double】 double的精度太低【相对来说的】,不适合做财务软件 财务涉及到钱的问题,要求精度较高,所以SUN在基础SE类库当中 为…

java try catch 例子_java try catch

try catch机制非常好。那些觉得try catch不行的人,是他们自己的水平有问题,无法理解这种机制。并且这群人写代码不遵守规则,喜欢偷懒,这才造成try catch不好的错觉。详细解释:1.程序要健壮,必须要设计报错机…

JAVA入门级教学之(布尔型数据类型)

/* 关于布尔型数据类型: boolean 在java语言中boolean类型只有两个值:true、false,没有其它值 不像c语言中,0和1可以表示假和真 在底层存储的时候boolean类型占用1个字节,因为实际存储的时候false底层是0,true底层是1…

java 自动生成文档_[原]java开发文档的自动生成方式

对于Java注释我们主要了解三种:// 注释一行/* ...... */ 注释若干行第三种,文档注释:/** ...... */ 注释若干行,并写入 javadoc 文档通常这种注释的多行写法如下:/*** .........* .........*/很多人多忽视了这第三种注…

JAVA入门级教学之(数据转换规则)

/* 关于基本数据之间的互相转换&#xff1a;转换规则 1、八种基本数据类型中**除布尔类型之外**剩下的7种类型之间都可以互相转换2、小容量向大容量转换&#xff0c;称为自动类型转换&#xff0c;容量从小到大排序如下&#xff1a;-byte<short<int<long <float<…