鱼C论坛

 找回密码
 立即注册
查看: 4921|回复: 20

[知识点备忘] 第047讲:函数(VII)- lambda表达式

[复制链接]
发表于 2022-1-13 23:27:14 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-19 08:18:14 | 显示全部楼层
放平心态
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2022-4-9 10:15:04 | 显示全部楼层
lambda表达式也称匿名函数,是一种比较特殊的函数实现方式,也是“一行流”代码的核心与常客。lambda表达式语法简练,像一个极致精简后的函数,其本质是一个表达式,因而可以用在常规函数不可能存在,即不允许def语句出现的地方(如放在列表中,或作为map()、filter()等函数的第一个参数),这也是lambda表达式最大的优势所在!然而,由于所有的功能代码都局限在一个表达式中去实现,lambda表达式通常也只能实现较为简单的需求。事实上,lambda表达式也常被用于去做简单的工作,与定义复杂函数的def语句相对应。总体来看,在恰当的地方使用lambda表达式利大于弊,值得提倡!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-3 11:17:59 | 显示全部楼层
分享案例中的代码:
def squareX(x):
    return x ** 2

squareX(3)
>>>
9

squareY = lambda y : y ** 2
squareY(3)
>>>
9

由于lambda是一个表达式,它就可以用在很多常规函数无法应用的地方。
y = [lambda x : x ** 2, 2, 3]
y[0](5)
>>>
25

# 实际开发中,不推荐这样写!

有了lambda,很多时候我们就可以简化我们的代码,比如:
def _(x):
    return ord(x) + 10

list(map(_, "Python"))
>>>
[90, 131, 126, 114, 121, 120]
# 可以用lambda简写上面的代码
maped = map(lambda x : ord(x) + 10, "Python")
list(maped)
>>>
[90, 131, 126, 114, 121, 120]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-29 19:13:57 | 显示全部楼层
lambda表达式
map(), filter()函数复习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-8 10:52:46 | 显示全部楼层
lambda 是一个表达式,而非语句,所以它能够出现在 Python 语法不允许 def 语句出现的地方
lambda 表达式可与 map() 和 filter() 函数配合使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-11 15:55:52 | 显示全部楼层
卡打
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-14 16:18:51 | 显示全部楼层
滴滴滴~打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 14:54:25 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-25 18:06:23 | 显示全部楼层
放平心态
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 18:55:56 | 显示全部楼层
每天进步一点点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-7 19:54:54 | 显示全部楼层
Learning...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-11 12:32:26 | 显示全部楼层
本帖最后由 lxping 于 2022-11-11 12:34 编辑

在第3点中的代码发现错误,具体如下:
list(mapped = map(lambda x : ord(x) + 10, "FishC"))
TypeError: list() takes no keyword arguments
应为:
list(map(lambda x : ord(x) + 10, "FishC"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:39:08 | 显示全部楼层
2023第一弹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-3 20:52:56 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-12 10:24:49 | 显示全部楼层
power = {"吕布":999, "关羽":888, "刘备":666, "张飞":900, "赵云":789, "不二如是":999}
   
# 请 lambda 表达式和 filter() 函数配合,替换下面的代码
greater = []
for k, v in power.items():
    if v > 800:
        greater.append((k,v))
# 请 lambda 表达式和 filter() 函数配合,替换下面的代码
   
print(greater)
[('吕布', 999), ('关羽', 888), ('张飞', 900), ('不二如是', 999)]


greater = list(filter(lambda k,v : v>800, power.items()))
为什么这样行不通??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-20 11:55:19 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-31 16:53:03 | 显示全部楼层
卡打
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-8 17:45:26 | 显示全部楼层

心态放平
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-31 08:29:16 | 显示全部楼层
本帖最后由 PossibleWL 于 2023-10-31 09:17 编辑
Arrin 发表于 2023-3-12 10:24
power = {"吕布":999, "关羽":888, "刘备":666, "张飞":900, "赵云":789, "不二如是":999}
   
# 请 lam ...


TypeError: <lambda>() missing 1 required positional argument: 'v'
你看type error就明白,lambda定义了参数k、v两个参数,其中k是后者power.items()的元组返回,实际左侧缺少一个lambda右侧定义的v函数相关的位置参数V。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 05:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表