1. lambda表达式介绍
lambda表达式的语法格式:
lambda 参数列表 : lambda体
有时使用函数时不需要给函数分配一个名称,该函数就是匿名函数,python中使用lambda表达式表示匿名函数。lambda表达式等价于:
- def 函数名(参数列表):
- 函数体
- return 返回值
lambda是关键字声明,参数列表跟函数中的参数列表一样,但是不需要使用小括号括起来;冒号后面是lambda体,lambda表达式的主要代码在lambda体编写,类似于函数体。
lambda体只能包含一条语句,该语句会计算一个结果返回给lambda表达式,不需要return语句返回。
2. lambda和def的区别
lambda函数的优势:
3. lambda函数使用示例
3.1. 定义计算函数
- add_lambda = lambda a,b:a+b
- print(add_lambda(10,20)) # 输出 30
- print((lambda a,b:a*b)(10,50)) # 输出 500
3.2. 结合判断语句
- get_odd_even = lambda x:"偶数" if x%2==0 else "奇数"
- print(get_odd_even(1)) # 输出 奇数
- print(get_odd_even(4)) # 输出 偶数
3.3. 不使用参数
- print_python = lambda : 'Hello python'
- print(print_python()) # 输出 Hello python
3.4. 结合列表使用
- l = [['2','CPP'],['3','java'],['4','php'],['1','c'],['7','python'],['6','html']]
- l.sort(key=lambda x:x[0]) # 按照列表的第一个元素进行排序
- print(l) # 输出 [['1', 'c'], ['2', 'CPP'], ['3', 'java'], ['4', 'php'], ['6', 'html'], ['7', 'python']]
元组、字典也可以这样使用。
4. 与map/filter/reduce方法混搭使用
与map方法混搭使用时,遍历序列,对序列中每个元素进行操作,最终获得新的序列。
示例:
- l = map(lambda n : n**2, [1,2,3,4,5])
- print(list(l)) # 输出 [1, 4, 9, 16, 25]
与filter混搭使用进行元素筛选,最终获得符合条件的序列。
示例:
- l = filter(lambda n : n%2==0, {1,2,3,4,5,6,7,8,9})
- print(tuple(l)) # 输出 [2, 4, 6, 8]
与reduce混搭使用对元素进行累计操作,python3中移到了functools模块中,使用时需要导入functools模块。
- l=reduce(lambda x,y:x+y,(1,2,3,4,5))
- print(l) # 输出 15