c++ lambda函数_lambda表达式

一.lambda语法

3ae01bca373325eae0d05aa5420dec4c.png b0ef61833b93dc4f29708e012de6c53e.png

lambda参数列表:表达式

lambda只是一个表达式,函数体比def简单

lambda的主体是一个表达式,而不是一个代码块。只能在lambda表达式中封装有限的逻辑进去。

lambda表达式是起到一个函数快速书写的作用。允许在代码内嵌入一个函数的定义

注意:

1.lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用

2.lambda表达式能接收任何数量的参数但只能返回一个表达式的值

3.直接打印lambda表达式,输出的是此lambda的内存地址

# 需求:函数  返回值 100# 1.函数def fn1():return 100result = fn1()print(result)# 2.lambda 匿名函数# lambda 参数列表:表达式fn2 = lambda:100print(fn2) # lambda内存地址# 100返回值 调用函数print(fn2())# lambda参数列表:表达式# 注意:lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用#      lambda表达式能接收任何数量的参数但只能返回一个表达式的值# 直接打印lambda表达式,输出的是此lambda的内存地址

体验lambda加法计算

# 3 + 2 + 1def sum_numbers(num):# 1.如果是1,直接返回1--出口    if num == 1:return 1    # 2.如果不是1,重复执行累加并返回结果    return num + sum_numbers(num - 1)
sum_result = sum_numbers(3)# 输出结果是6print(sum_result)# 函数def fn1():return 100print(fn1)print(fn1())# lambda表达式def fn2(): return 100print(fn2)print(fn2())

二.lambda的参数形式

3ae01bca373325eae0d05aa5420dec4c.png b0ef61833b93dc4f29708e012de6c53e.png

1.无参数

# 1.无参数fn1 = lambda:100  # 冒号后面返回的是结果print(fn1())

2.一个参数

# 2.一个参数fn2 = lambda a: aprint(fn2('hello world'))

3.默认参数

# 3.默认参数(缺省参数)fn3 = lambda a,b,c = 100: a + b + cprint(fn3(10,20))print(fn3(10, 20, 200))

4.可变参数:*args

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

# 4.可变参数:*args# 这里的可变参数传入到lambda之后,返回值为元组fn4 = lambda *args:argsprint(fn4(10, 20))print(fn4(10, 20, 40))print(fn4(10))

5.可变参数:**kwargs

# 5.可变参数:**kwargsfn5 = lambda **kwargs:kwargsprint(fn5(name='python'))print(fn5(name='python',age = 10))

三.lambda的应用

3ae01bca373325eae0d05aa5420dec4c.png b0ef61833b93dc4f29708e012de6c53e.png

1.带判断的lambda

# lambda 两个数字比大小,谁大返回谁# 三目运算符,判断两个元素的大小,谁大返回谁到前面,否则else后面fn1 = lambda a,b:a if a > b else bprint(fn1(1000, 800))

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

按照key值升序排列

按照key值降序排列,reverse = True

students = [
{'name':'tom','age':20}, {'name':'rose','age':30}, {'name':'jack','age':40}
]# sort(key = lambda...,reverse = bool数据,可做升序或降序的排列)# 1. (name key)按照name 这个key对应的值,进行升序排列# name key 对应的值进行升序排序students.sort(key = lambda x:x['name'])print(students)# 2. (name key)按照name 这个key对应的值,进行降序排列# name key 对应的值进行降序排序students.sort(key = lambda x:x['name'],reverse = True)print(students)# 3. age key 对应的值进行升序排序students.sort(key = lambda x: x['age'])print(students)
fn = lambda string: lambda msg: f'{string}: {msg}!'fnh = fn("hello")print(fnh("MrSun"))
fnw = fn("welcome to")print(fnw("China"))
3a35b632882d5fc1e51f4dd03d1f7dcc.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值