lambda函数的用法:
lambda的形式
lambda的形式是唯一的就像是下面这样子:
lambda arugment_list:expression
‘‘‘
语法中的argument_list是参数列表,它的结构和python中的function的参数列表是一样的,例如:
a,b a=1,b=2 *args **kargs
语法中的expression是一个关于参数的表达式并且:
表达式中出现的参数需要在argument_list中有定义 ,并且表达式只能是单行的,如下是一些合法的表达式
1
None
a+b
sum(a)
1 if a>10 else 0
’’’
那么lambda
有什么用处呢?
- 1.直接赋予一个变量,然后再像函数一样子的调用:
f = lambda x,y,z : x*y*z
f(1,2,3) # >>3
当然也可以直接在lambda后面直接传入参数如
(lambda x,y,z : x*y*z)(1,2,3) # >>3 这样子调用的结果和上面的是一样子的
- 2.将
lambda
作为一个变量传入到其他函数的参数从而能够结合一些map,filter,sorted,reduce
等一些python内置函数或者自己定义的函数来使用
filter(lambda x:x%3==0,[1,2,3,4,5,6]) # >>[3,6]
squares = list(map(lambda x:x**2,range(5))) # >>返回一个平方后的列表 注意map返回的是一个可以迭代的map类型的对象
a = [‘(a’,3),('b':2),('c',1)]
sorted(a,key = lambda x : x[0]) # >> 输出一个按照元组第一个元素排序后的列表
reduce(func,iterable[,initializer])函数也是一个神奇的函数,其中的func一般有两个参数,并且在可迭代的对象中先对前两个元素进行计算并且计算结果在和第三个元素进行计算
from functiontools import reduce
reduce(lambda x,y : '{},{}'.format(x,y),[1,2,3,4,5,6,7,8,9] # 就可以输出‘1,2,3,4,5,6,7,8,9’
- 3.嵌套使用把
lambda
函数嵌套进入普通函数中lambda函数本身作为返回的值,当然lambda也可以嵌套lambda:
def increment(n):
return lambda x:x+=n
f = increment(6)
f(4) # >> 10
(lambda a : a*(lambda b: b*b)(a))(2) # 多重嵌套可以实现 2**3