一、lambda表达式定义

lambda表达式也叫匿名函数,用于代码的简化,适用于一个函数只有语句代码,一个返回值。

语法:

        变量 = lambda 函数参数列表:表达式

调用语法:

        变量(参数列表)

注意:参数可以没有,定义匿名函数时可以省略

案例1:

        定义一个函数,返回88,通过普通函数和匿名函数对比实现

# 1.普通函数
def fun():
    return 88
# 调用函数并打印返回值
print(fun()) #88
# 2.匿名函数(lambda)表达式

f = lambda : 88
# 调用函数并打印返回值
print(f())
# 打印变量名:变量名指向存储地址,地址中存放匿名函数代码
print(f) #<function <lambda> at 0x000002059E047798>

二、带参数的lambda表达式

1.普通参数

定义一个函数,求两个数值的乘积,通过普通函数和匿名函数对比实现

# 1.普通函数
def fun(number1, number2):
    return number1 * number2
print(fun(2, 3))
# 2.lambda表达式
f = lambda number1, number2: number1 * number2
print(f(2, 3))

2.默认值参数

默认值参数可以给实参也可以不传递实参,不传递实参时,适用默认值数据进行运算

f = lambda n, m, k=100: n + m + k
print(f(10,20) )  #130
print(f(10,20,30)) #60

3.不定长参数:可变参数*args 

f = lambda *args: args
print(f(1,2,3,4.5,6))  #(1, 2, 3, 4.5, 6)

4.不定长参数:可变参数**kwargs

f = lambda **kwargs: kwargs
print(f(name='孙权', age=18, sex='男'))

三、带if的lambda表达式

定义一个函数,求两个数值中的最大值,通过普通函数和匿名函数对比实现

# 1.普通函数
def fun(number1,number2):
    if number1>number2:
        return number1
    else:
        return number2
print(fun(2,3))
# 2.lambda表达式
f = lambda number1,number2 : number1 if number1>number2 else number2
print(f(2,3))

四、列表+字典数据lambda排序

语法:

        列表名.sort(key=lambada表达式,reverse=True/False)

依据列表中的字典元素项的某个元素进行排序(升序或降序)

案例

根据name排序employee列表中的字典元素项

employee = [
    {'name': 'zgl', 'age': 21},
    {'name': 'sq', 'age': 20},
    {'name': 'lv', 'age': 40}
]
# 1.按name升序排序
employee.sort(key=lambda x: x['name'], reverse=False)
print(employee) #[{'name': 'lv', 'age': 40}, {'name': 'sq', 'age': 20}, {'name': 'zgl', 'age': 21}]

# 2.按name降序排序
employee.sort(key=lambda x: x['name'], reverse=True)
print(employee) #[{'name': 'zgl', 'age': 21}, {'name': 'sq', 'age': 20}, {'name': 'lv', 'age': 40}]

# 3.按age升序排序
employee.sort(key=lambda x:x['age'])
print(employee)  #[{'name': 'sq', 'age': 20}, {'name': 'zgl', 'age': 21}, {'name': 'lv', 'age': 40}]

# 4.按age降序排序
employee.sort(key=lambda x:x['age'],reverse=True)
print(employee)  #[{'name': 'lv', 'age': 40}, {'name': 'zgl', 'age': 21}, {'name': 'sq', 'age': 20}]


'''
    分析“按name升序排序”
    当程序执行到"employee.sort(key=lambda x: x['name'], reverse=False)"代码处:
    1.sort函数会遍历employee中的元素(字典),将元素逐个赋值放入x变量中进行lambda表达式运算,获取x['name']对应的值,并保存到临时变量中。
    2.对取出来的值进行排序,同时对应字典顺序也随着值的排序进行自动排序。
'''
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐