Python学习之 ---匿名函数lambda表达式

本文实例讲述了python中的lambda表达式用法。分享给大家供大家参考,具体如下:

匿名函数

匿名:隐匿名字,既没有名称

lambda 表达式

Python中,使用lambda 表达式构建匿名函数

lambda x:x*2 #定义
(lambda x,y: x+y)(4,5)#加一个括号表示成函数,后面加(4,5)表示传参.在冒号之后不允许出现等号★★★★★,冒号后面表示返回值,不需要返回值可加None,返回固定值直接写缺省值即可;无参数表达式则在冒号前面不写表达式即可.
>>>9  
[lambda x:x+1][0](1)#  一个列表,索引为0.得到一个lambda表达式,传参值为1  

● 使用lambda关键字定义匿名函数,格式为lambda [参数列表]: 表达式
● 参数列表不需要小括号。无参就不写参数
● 冒号用来分割参数列表和表达式部分
● 不需要使用return。表达式的值,就是匿名函数的返回值。表达式中不能出现等号
● lambda表达式(匿名函数)只能写在一行上,也称为单行函数

匿名函数往往用在为高阶函数传参时,使用lambda表达式,往往能简化代码

# 返回常量的函数
print((lambda :0)())
>>> 0
# 加法匿名函数,带缺省值
print((lambda x, y=3: x + y)(5))  
>>> 8
print((lambda x, y=3: x + y)(5, 6))  
>>> 11
# keyword-only参数
print((lambda x, *, y=30: x + y)(5))   
>>> 35
print((lambda x, *, y=30: x + y)(5, y=10))  
>>> 15
# 可变参数
print((lambda *args: (x for x in args))(*range(5)))  #  返回值是一个迭代器注意括号 
>>> 生成一个可迭代对象.
print((lambda *args: [x+1 for x in args])(*range(5)))  #这里返回的是一个列表 
>>> [1,2,3,4,5]
pri,nt((lambda *args: {x%2 for x in args})(*range(5)))  # 集合,x与2取余数剩下的都是0,1 ,集合去重
>>> {0,1}
[x for x in (lambda *args: map(lambda x: x+1, args))(*range(5))] # 高阶函数  
#lambda  收集到[0,4]的数封装到元组内,map  一个个遍历给定参数
>>> [1,2,3,4,5]
[x for x in (lambda *args: map(lambda x: (x+1,args), args))(*range(5))]  
>>> #  map  收集的为遍历的  x  , 里面又加一个args本身的值,然后被括号封成一个元组 
[(1, (0, 1, 2, 3, 4)),
 (2, (0, 1, 2, 3, 4)),
 (3, (0, 1, 2, 3, 4)),
 (4, (0, 1, 2, 3, 4)),
 (5, (0, 1, 2, 3, 4))]
{x:y for x,y  in (lambda *args: map(lambda x: (x+1,args), args))(*range(5))} 
>>>  则生成一个字典
map (lambda x :x+1,[1,2,3])  #map 是一个惰性求职

猜你喜欢

转载自blog.csdn.net/qq_40498551/article/details/89348666
今日推荐