摘要:本文主要介绍了lambda的使用。

1、lambda初体验

lambda其实是一个匿名函数,其使用的语法形式为  lambda  参数列表:表达式(返回值),其主要作用是减少代码量。

1 func1=lambda a,b:a*b
2 print(func1)    #<function <lambda> at 0x000001BA03FF5598>  可以看出匿名函数
3 print(func1(10,10))    #100

 2、lambda的参数形式

其实可以想到lambda作为一个匿名函数,其参数的形式应该和正常的函数没有什么两样。如下:

 1 func1=lambda :100   #无参数形式
 2 print(func1())  #100
 3
 4 func2=lambda a,b:a**b  #一般参数形式
 5 print(func2(2,3))  #8
 6
 7 func3=lambda a,b,c=100:a**b+c   #默认参数形式
 8 print(func3(2,3))   #108
 9
10 func4=lambda *args:args   #可变参数
11 print(func4(100,'abc','009'))   #(100, 'abc', '009')
12
13 func5=lambda **kwargs:kwargs   #可变参数
14 print(func5(name='tom',age=18))  #{'name': 'tom', 'age': 18}

 3、lambda的应用

  • 带判断表达式的lambda:

1 func=lambda a,b:(a+b) if a>b else (a-b)
2 print(func(2,3))  #-1
  •  在列表排序方法sort的参数中直接调用lambda可以极大的减少代码量:

 1 student=[{'name':'Tom','age':18,'class':'001'},
 2       {'name':'Jack','age':20,'class':'003'},
 3       {'name':'Lucy','age':24,'class':'009'}]
 4 key=lambda x:x['name']
 5 print(key(student[1]))  #Jack这里只是为了看清楚下面sort的参数是什么
 6
 7 student.sort(key=lambda x:x['name'])  #这里x指代的就是student列表中的每一项,返回值是每一项字典中的name
 8 print(student)
 9 #[{'name': 'Jack', 'age': 20, 'class': '003'}, {'name': 'Lucy', 'age': 24, 'class': '009'}, {'name': 'Tom', 'age': 18, 'class': '001'}]
10
11 student.sort(key=lambda x:x['name'],reverse=True)
12 print(student)
13 #[{'name': 'Tom', 'age': 18, 'class': '001'}, {'name': 'Lucy', 'age': 24, 'class': '009'}, {'name': 'Jack', 'age': 20, 'class': '003'}]
14
15 student.sort(key=lambda x:x['age'])
16 print(student)
17 #[{'name': 'Tom', 'age': 18, 'class': '001'}, {'name': 'Jack', 'age': 20, 'class': '003'}, {'name': 'Lucy', 'age': 24, 'class': '009'}]
01-04 05:17