一.定义
- 匿名函数是指一类无须定义标识符的函数或子程序
- python用lambda语法定义匿名函数,只需用表达式而无需申明(省略了用def定义函数的标准步骤)
- 格式:lambda arg1,arg2…(形参):expression(函数/数学表达式)
lambda函数能接受任何数量的参数,但只能返回一个表达式的值
mypow=lambda x,y:x**y
print(mypow(2,3))
mymax=lambda num1,num2:num1 if num1>num2 else num2
print(mymax(2,3))
结果
8
3
二.应用场合
1.函数作为参数传递
说明: 函数也可以赋值。
如:
求绝对值:abs(-1)
a=abs(-1) 将abs()函数赋给a,则a和abs的功能一样
即a(-1)=abs(-1)
同理:
当有一个参数是函数时,这个参数可以用lambda写
def dun(num1,num2,operator_fun=pow):
return operator_fun(num1,num2)
print(dun(2,3))
print(dun(2,3,lambda num1,num2:num1+num2))
结果
8
5
2.作为内置函数的参数
案例1
from prettytable import PrettyTable
#友好的以表格的方式打印商品信息
def show(goods):
table=PrettyTable(field_names=['Name','Count','Price'])
for good in goods:
table.add_row(good)
print(table)
goods=[
('Python核心编程',200,378.9),
('Java核心编程',300,278.9),
('Php编程',100,78.9),
('Ruby核心编程',260,178.9)
]
print('按数量进行排序'.center(30,'*'))
goods.sort(key=lambda x:x[1])
show(goods)
print('按价格进行排序'.center(30,'*'))
goods.sort(key=lambda x:x[2])
show(goods)
结果
***********按数量进行排序************
+----------------+-------+-------+
| Name | Count | Price |
+----------------+-------+-------+
| Php编程 | 100 | 78.9 |
| Python核心编程 | 200 | 378.9 |
| Ruby核心编程 | 260 | 178.9 |
| Java核心编程 | 300 | 278.9 |
+----------------+-------+-------+
***********按价格进行排序************
+----------------+-------+-------+
| Name | Count | Price |
+----------------+-------+-------+
| Php编程 | 100 | 78.9 |
| Ruby核心编程 | 260 | 178.9 |
| Java核心编程 | 300 | 278.9 |
| Python核心编程 | 200 | 378.9 |
+----------------+-------+-------+
案例2
#给定一个整型数组,将数组中所有的0移动到末尾,非0项保持不变
#在原始数组上进行移动操作,勿创建新的数组
li=[0,7,0,2]
li.sort(key=lambda x:1 if x==0 else 0)
print(li)
结果
[7, 2, 0, 0]