Python入门到精通Day12:06-15-lambda

三、lambda表达式
3.1 lambda的应用场景
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。(可以简化代码,又可以节省服务器内存开销。)

3.2 lambda语法
lambda 参数列表 : 表达式
表达式必须有返回值。
注意:
lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
lambda表达式能接收任何数量的参数但只能返回一个表达式的值。

# 1. 函数
def fn1():
    return 100

result = fn1()
print(result)   # 100

print(fn1)  # <function fn1 at 0x000001E4D0FB7280>
print(fn1())    # 100

# 2. lambda表达式 匿名函数
fn2 = lambda: 100
print(fn2)  # <function <lambda> at 0x0000020859EB9040> # lambda内存地址
# 100返回值 调用函数
print(fn2())    # 100

注意:直接打印lambda表达式,输出的是此lambda的内存地址。

3.3示例:计算a + b
3.3.1 函数实现

def add(a, b):
    return a + b


result = add(1, 2)
print(result)   # 3

思考:需求简单,是否代码多?
3.3.2 lambda实现

fn1 = lambda a, b: a + b
print(fn1(1, 2))    # 3

3.4 lambda的参数形式
3.4.1 无参数

fn1 = lambda: 100
print(fn1())  # 100

3.4.2 一个参数

fn2 = lambda a: a
print(fn2('hello world!'))  # hello world!

3.4.3 默认参数(缺省参数)

fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20))  # 130
print(fn1(10, 20, 200))  # 230

3.4.4 可变参数:*args

fn1 = lambda *args: args
print(fn1(10, 20, 30))  # (10, 20, 30)
print(fn1(10, 20, 30, 40))  # (10, 20, 30, 40)

注意:这里的可变参数传入到lambda之后,返回值为元组。

3.4.5 可变参数: **kwargs

fn1 = lambda **kwargs: kwargs
print(fn1(name='Python'))  # {'name': 'Python'}
print(fn1(name='Python', age=30))  # {'name': 'Python', 'age': 30}

3.5 lambda的应用
3.5.1 带判断的lambda

# lambda 两个数字比大小,谁大返回谁
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))   # 1000
print(fn1(20, 50))  # 50

3.5.2 列表数据按字典key的值排序

student = [
    {'name':'TOM', 'age':20},
    {'name':'ROSE', 'age':19},
    {'name':'Jack', 'age':22},
]

# sort(key=lambda..., reverse=bool数据)
# 1. name key 对应的值进行升序排序
student.sort(key=lambda x: x['name'])
print(student)
# [{'name': 'Jack', 'age': 22}, {'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}]

# 2. name key 对应的值进行降序排序
student.sort(key= lambda x: x['name'], reverse=True)
print(student)
# [{'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name': 'Jack', 'age': 22}]

# 3, age key对应的值进行升序排序
student.sort(key= lambda x: x['age'])
print(student)
# [{'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}, {'name': 'Jack', 'age': 22}]
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页