Python的lambda匿名函数的学习与使用

lambda函数

lambda 函数是一种匿名函数,也称为内联函数。
通常用于哪些简单的、一次性的函数,这样可以避免定义一个完整的函数。
与普通函数不同,它们是一种更加简介的方式来编写小型临时函数

lambda 语法

- lambda 函数的语法很简单:lambda关键字定义函数,后面跟着参数列表和一个表达式
- lambda arguments: expression

lambda 参数说明

参数说明:
- arguments  --表示函数参数,可以是一个或多个,多个参数之间用逗号分隔。
- expression --表示函数体,可以是任何有效的Python表达式,即是函数的具体实现逻辑
注意:如果一个匿名函数的参数列表为空,那么在定义时也需要使用一对空括号来表示,函数变量加了括号就是执行函数,不加就是变量。

lambda 函数的优点与限制

优点:

优点说明
简洁性lambda函数通常用于简单、一次性操作,使代码更简洁
匿名性lambda函数是匿名的,适合作为参数传递给其他函数
功能性编程lambda函数是映射式变成的强大工具, 可以进行函数组合、映射、过滤等操作
节省内存lambda函数是为一次性的简单函数,虽然占用额外空间,但可以即用即弃,节省内存

限制:

限制说明
只能有一个表达式lambda函数的主体只能是单个表达式,不能包含多个语句或复杂逻辑
可读性lambda函数通常用于简单操作,复杂逻辑会降低代码可读性,不适合复杂函数
不支持注解lambda函数不支持像普通函数那样的类型注解,可能降低代码的可维护性
不支持return语句返回结果lambda关键字定义匿名函数,表达式的结果就是函数的返回值

lambda函数与普通函数的区别

类型lambda函数普通函数
定义方式使用lambda关键字定义,语法简洁使用def关键字定义
名称匿名,没有函数名有明确的函数名
参数数量可以有零个或多个参数,但是表达式只能有一个可以有零个或多个参数,函数体内可以有多个语句
可读性lambda由于其匿名性和简洁性,对于复杂的逻辑代码可读性比较低对于复杂的逻辑代码,def关键字定义的函数通常更具有可读性
性能lambda对于简单操作,性能上快于def函数,因为它们在编译时进行优化对于更复杂的操作,def和lambda函数性能相差可以忽略不计
重要性lambda函数常用于一次性操作def函数可以重用,如需要在多个地方使用相同的函数逻辑,def定义的函数更为合适

lambda函数的用法

简单的用法

  1. 简单的返回结果
str_data = lambda: "hello world"
print(str_data())
# 输出结果:hello world
  1. 定义一个简单的lambda函数,对传入的参数求平方
int_data = lambda x: x * x
result = int_data(5)
print(result)
# 输出结果:25

作为参数传递给其它函数

  1. 使用lambda函数和map()函数将列表中的每个元素都平方
# 定义一个列表数据
lst_data = [1, 2, 3, 4, 5, 6]

result = list(map(lambda x: x * x, lst_data))
print(result)
# 输出结果:[1, 4, 9, 16, 25, 36]
  1. 使用lambda函数或filter()函数筛选出列表中的偶数
lst_data = [1, 2, 3, 4, 5, 6]

result = list(filter(lambda x: x % 2 == 0, lst_data))
print(result)
# 输出结果:[2, 4, 6]
  1. 使用lambda函数和sorted函数对数据进行排序
dct_data = [
    {"name": "zhangshan", "age": 24},
    {"name": "lisi", "age": 22},
    {"name": "wanghwu", "age": 27},
    {"name": "xaiqi", "age":18}
]

sorted_data = sorted(dct_data, key=lambda x: x["age"], reverse=True)
# reverse 表示排序,True表示正序,从大到小,False表示倒序,从小到大
print(sorted_data)
# 输出结果:
# [{'name': 'wanghwu', 'age': 27}, {'name': 'zhangshan', 'age': 24}, {'name': 'lisi', 'age': 22}, {'name': 'xaiqi', 'age': 18}]
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

现实与梦·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值