【Python学习】Lambda的使用
Lambda用法简介
Lambda的简介
先来看一下两段代码,可以看出这两段代码的效果是一致的。可以简略的看出lambda的作用和函数类似,传入了x,y这两个参数后会返回(x+y)的值。
其实lambda表达式又名匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。
语法如下:
name = lambda [list] : 表达式
#其中list是参数列表
其相当于普通函数的:
def name(list):
return 表达式
name(list)
Lambda与普通函数的区别
- lambda是一个匿名函数,普通函数必须要有一个名字,而lambda可以没有。
- lambda通常适用于编写一个简单的函数。所以在lambda表达式中不可以使用 if else while return语句
- lambda是一个单个的表达式而不是一个代码块,而函数是一个代码块,可进行复杂的计算
使用Lambda的好处
- 提高代码简洁性
- 对于一些不需要多次使用的函数,lambda用完及时释放,提高程序的性能
Lambda常用的场景
filter函数
#filter过滤器,用于返回iterable中满足function过滤条件的元素
filter(function, iterable)
此时lambda函数用于指定过滤列表元素的条件。
如下例子,过滤出[1,2,3]中能被三整除的元素
filter(lambda x: x % 3 == 0, [1, 2, 3])
sorted函数
sorted(list,key="排序规则")
此时lambda函数用于指定对列表中所有元素进行排序的准则。
如下例子,在[1,2,3,4,5]序列中,以和5的距离从小到大进行排序
sorted([1, 2, 3, 4, 59], key=lambda x: abs(5-x))
#abs函数---求绝对值
map函数
#第一个参数 function 以参数序列中的每一个元素调用 function 函数,
#返回包含每次 function 函数返回值的新列表。
map(function, iterable)
此时lambda函数用于指定对列表中每一个元素的共同操作。
如下例子,将[1,2,3]元素分别加1返回结果[2,3,4]
map(lambda x: x+1, [1, 2,3])
reduce函数
#用传给 reduce 中的函数 function(有两个参数)
#先对集合中的第 1、2 个元素进行操作,
#得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce(function, iterable)
此时lambda函数用于指定列表中两两相邻元素的结合条件。
如下例子表示求[1,2,3,4,5]的累加和
reduce(lambda x,y:x+y,[1,2,3,4,5])
参考:
http://c.biancheng.net/view/2262.html
Python:一个 lambda 表达式引起的思考