【python】详解lambda匿名函数以及结合map、reduce、filter、sorted等使用
2018-01-23 00:05
1131 查看
简单来说, lambda 表达式通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
lambda只是一个表达式,函数体比def简单很多
lambda的主体是一个表达式,而不是一个代码块。仅仅能表达有限的逻辑
lambda表达式是起到一个函数速写的作用,允许在代码内嵌入一个函数的定义
lambda格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值
单变量函数表达式实例:
多变量函数表达式实例:
通常lambda定义匿名函数,主要结合运用场景进行使用:
函数式编程:以sorted、reduce、map、filter函数作为支持,lambda函数就可以应用在函数式编程中
作为闭包,作为定义在函数的内部的函数使用
1.1、map(func,seqs)与lambda
1.2、sorted与lambda将list的数按照lambda定义的的key值排序
1.3、filter(func,seqs)与lambda
1.4、reduce(function,seqs)与lambda
2、作为闭包,作为定义在函数的内部的函数使用
可以简单粗暴地理解为闭包就是一个定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。
这里的lambda函数就是一个闭包,在全局作用域范围中,add_f(4)(7)正常执行且返回值为11,之所以返回11是因为在add_f局部作用域中,变量y的值在闭包的作用使得它在全局的作用域也可以被访问到。
lambda只是一个表达式,函数体比def简单很多
lambda的主体是一个表达式,而不是一个代码块。仅仅能表达有限的逻辑
lambda表达式是起到一个函数速写的作用,允许在代码内嵌入一个函数的定义
lambda格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值
lambda <变量名> : <逻辑表达式> #冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值 #例如单个变量:lambda x : pow(x) #多变量:lambda x,y : x+y
单变量函数表达式实例:
#定义一个x平方的函数 In [1]: a = lambda x: pow(x,2) In [2]: a(2) Out[2]: 4
多变量函数表达式实例:
In [3]: b = lambda x,y: x+y In [4]: b(2,3) Out[4]: 5
通常lambda定义匿名函数,主要结合运用场景进行使用:
函数式编程:以sorted、reduce、map、filter函数作为支持,lambda函数就可以应用在函数式编程中
作为闭包,作为定义在函数的内部的函数使用
1.1、map(func,seqs)与lambda
In [5]: list(map(lambda x: pow(x,2),list(range(5)))) Out[5]: [0, 1, 4, 9, 16]
1.2、sorted与lambda将list的数按照lambda定义的的key值排序
#一个整数列表,要求按照列表中元素的绝对值大小升序排列 In [18]: list1 = [3,5,-4,-1,0,-2,-6] ...: sorted(list1, key=lambda x: abs(x)) ...: Out[18]: [0, -1, -2, 3, -4, 5, -6]
1.3、filter(func,seqs)与lambda
# list1 = [3,5,-4,-1,0,-2,-6] In [25]: list(filter(lambda x:x > 0,list1)) Out[25]: [3, 5]
1.4、reduce(function,seqs)与lambda
#其中reduce函数是python中的一个二元内建函数,它可以通过传给reduce中的函数(必须是二元函数) #**依次**对数据集中的数据进行操作。例如传给reduce的函数是做加法,数据集是list1,那么reduce #函数的作用就是将数据集中的数据依次相加 # list1 = [3,5,-4,-1,0,-2,-6] In [30]: reduce(lambda x,y:x+y,list1) Out[30]: -5
2、作为闭包,作为定义在函数的内部的函数使用
可以简单粗暴地理解为闭包就是一个定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。
In [37]: def add_f(x): ...: return lambda y:y+x ...: In [38]: add_f(4)(7) Out[38]: 11
这里的lambda函数就是一个闭包,在全局作用域范围中,add_f(4)(7)正常执行且返回值为11,之所以返回11是因为在add_f局部作用域中,变量y的值在闭包的作用使得它在全局的作用域也可以被访问到。
相关文章推荐
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- python中的lambda匿名函数以及针对序列的内建函数map、filter和reduce
- 关于python当中lambda、yield、map、reduce、filter、sorted的总结
- python学习笔记(九)函数式进阶:使用map、reduce、filter、sorted
- python:内建函数、range()、map()、filter()、reduce()、sorted()、集合的使用、functools中的函数使用、MD5加密
- python3 常见函数 map、reduce、filter、lambda、sorted
- python2,3中内建函数map,reduce,filter,sorted配合lambda
- python:内建函数、range()、map()、filter()、reduce()、sorted()、集合的使用、functools中的函数使用、MD5加密
- Python中filter、lambda、map、reduce的使用
- Python 的lambda 以及 filter , map , reduce
- Python高阶函数(Map、Reduce、Filter)和lambda函数一起使用 ,三剑客
- Python 中的 map, reduce, zip, filter, lambda基本使用方法
- 【转】python的内建函数:filter,map,reduce,lambda,sorted等
- python常用函数之lambda、reduce、map、sorted、filter
- python几个重要的函数(lambda,filter,reduce,map,zip) 一、匿名函数lambda lambda argument1,argument2,...argumentN :e
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
- Python入门 第四天(函数式编程、map、reduce、filter、排序函数、函数返回函数、闭包、匿名函数lambda)
- Python list--> Filter , Map , Reduce 使用笔记 (lambda )
- Python特殊语法:filter、map、reduce、lambda [转]
- Python特殊语法:filter、map、reduce、lambda