python中的lambda函数

本文介绍了Python中的lambda函数,包括其语法、特性、用法。lambda函数无名、功能简单,常用于创建匿名函数。常见用途包括直接赋值给变量、作为其他函数的参数、在函数式编程中如map、filter等。文章还提到了将lambda函数转换为标准函数的方法,并探讨了在使用filter函数时遇到的疑惑,期待读者解答。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lambda是python中定义关键字,且使用频次较高,以下内容为lambda函数的语法、特性、用法和lambda函数改写成python标准函数。

lambda函数语法:

 lambda args: expression
  • args:参数,参数的形式可以有如下的形式
    a, b
    a=1, b=2
    *args
    **kwargs
    a, b=1, *args
    空
  • expression:匿名函数返回值的逻辑表达式,假如expression是a + b, 那匿名函数的返回值就是a + b的值
    1
    None
    a + b
    sum(a)
    1 if a >10 else 0

lambda函数的特性

  • lambda函数没有名字。
  • lambda函数输入:传入到参数列表argument_list的值;输出:表达式expression计算得到的值
  • lambda函数一般功能简单,只能完成非常简单的功能

lambda函数的用法

  • 将lambda函数赋值给一个变量
>>>my_func = lambda a : 0 if a > 1 else 2
>>>my_func(2)
0
  • 将lambda函数赋值给一个函数
# 改写代码原来的逻辑
>>>def print_name():
>>>    print("code of wang")
>>>print_name = lambda : print('aaa')
>>>print_name()
aaa
# 屏蔽或者改写系统原有的函数
import time
time.sleep = lambda x: None
def time_test():
    start = time.time()
    time.sleep(3)
    stop = time.time()
    print(stop-start)
time_test()   # 输出的值为2.1457672119140625e-06,也就是说我电脑执行这段代码的时间是0.000002秒左右
  • 将lambda函数作为返回值,很好的诠释了python中万物皆对象的特点
>>>def factory_func():
       return lambda x, y: x+y
>>>a = factory_func()
>>>a
<function factory_func.<locals>.<lambda> at 0x1012f8e18>
>>>a(1, 2)
3
  • 将lambda函数作为参数传递给其他函数,------函数式编程map、filter、sorted、reduce

这里我在自己私下里敲代码时得到a是filter object对象,好多资料和网上的教程写的是python3中filter返回迭代器对象,但是我调用了iter()和next方法都无法获取filter object的值,只能通过list()方法获取,这一点我不明白,希望有大神看到可以帮我解答一下…

# 1.用于filter函数
>>>a = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 6])
>>>list(a)
[3, 6]
# 2.用于sorted函数
# 按照距离5的距离从小到大进行排序
>>>sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
[5, 4, 6, 3, 7, 2, 8, 1, 9]
# 3.用于map函数
>>>new_list = map(lambda x: x+1, [1, 2, 3])
>>>list(new_list)
[2, 3, 4]
# 4.用于reduce函数
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
15

lambda函数转标准函数

1.首先根据lambda函数的功能为函数做一个三个词之内能概括的英文注释
2.将注释作为函数的函数名,args作为参数,expression作为函数的返回值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值