在Python中,lambda是一种匿名函数的方式。它可以接受任意数量的参数,但只能返回一个表达式的值。
lambda函数的语法如下:
lambda 参数: 表达式
其中,参数是函数的输入,可以是任意数量的参数,用逗号分隔。表达式是函数的输出,只能有一个。
lambda函数常用于需要一个简短的函数定义的情况,特别是在需要传递函数作为参数的地方。在使用lambda函数时,通常将其赋值给一个变量,以便后续使用。
使用方式:
def fun1(a,b):
return a+b
c=fun1(1,2)
print(c)
fun2=lambda a,b:a+b
print(fun2(1,4))
无参数情况
num=lambda : 100
print(num())
在无参数情况下,lambda关键字和冒号定义一个匿名函数
一个参数情况
```python
num=lambda a:a
print(num('我和你在一起学习'))
```
```python
num2=lambda b:b
print(num2('要学习了'))
```
当lambda函数有参数时,参数可以在冒号之前指定,多个参数使用逗号分隔
在默认参数(缺省参数)的情况
```python
1.
import random #随机产生的数
num3=lambda a,b,c=100:a+b+c #c是默认值100
print(num3(a=random.randint(1,101),b=random.randint(1,101)))
```
```python
2.
简单的:
num4=lambda d,e,f=10:d+e+f #f是默认值10
print(num4(9,19))
```
在默认或缺省参数情况下,lambda函数可以直接定义在函数调用的地方,并且不需要显式地定义参数。默认参数的值会在lambda函数中被引用,类似于全局变量.
在上面2的例子中,lambda函数num4有三个参数d和e和f,其中f是一个默认参数,它的默认值为10。当提供两个参数时,将f代入参数值,d和e只能取成(9,19)或(19,9),所以num4(9,19)的值是38.
如果当只有一个值(11),另外一个参数也默认是相同值
num5=lambda g,h=11: g+h
print(num5) #读取是22
在可变参数(*args)情况下
```python
num5=lambda *args:args
print(num5(10,20,30,40)) #主要*args的返回基本都是元组形式
```
在可变参数(**kwargs)情况下
```python
num6=lambda **kwargs:kwargs
print(num6(name='blue',age=20)) #主要**kwargs的返回基本都是字典形式
```
```python
num7=lambda **kwargs:kwargs
print(num7(name='小李',age='20',job='None'))
```
在lambda里面用if判断语句
```python
num8=lambda a,b:a if a>b else b #a=29 b=35
print(num8(29,35))
num9=lambda c,e:c if c<e else c #c=19 e=8
print(num9(19,8))
```
列表中的字典排序
```python
students=[
{'name':'小李','age':'22'},
{'name':'小东','age':'23'},
{'name':'小辉','age':'20'}
]
students.sort(key=lambda y:y['name']) #students列表 name根据key来完成升序
print(students)
students.sort(key=lambda y:y['name'],reverse=True) #students列表 name根据key来完成降序
print(students)
students.sort(key=lambda x:x['age']) #students列表 age根据key来完成升序
print(students)
students.sort(key=lambda x:x['age'],reverse=True) #students列表 age根据key来完成降序
#注意x和y是形参,代表将来的排序
练习题(给新手写)
students=[
{'name':'小朱','age':'21'},
{'name':'小光','age':'22'},
{'name':'小南','age':'19'},
{'name':'小星','age':'23'}
]
```