Python 中的 Lambda 函数——示例语法

本文介绍了Python中的lambda函数,一种用于创建简单匿名函数的语法。通过示例1、2、3,展示了如何在map等高阶函数中使用lambda,强调其在减少代码冗余和提高可读性方面的优势。结论部分鼓励读者深入学习Python和AIoT知识。

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

Python 中的 Lambda 函数——示例语法

 

Lambda 函数是只能包含一个表达式的匿名函数。

你可能认为 lambda 函数是中级或高级功能,但在这篇文章里你将了解如何轻松地在代码中开始使用它们。

在 Python 中,函数通常是这样创建的:

def my_func(a):
  # function body

你用 def 关键字声明它们,给它们一个名字,然后添加由圆括号包围的参数列表。可能有很多行代码,里面有你需要的尽可能多的语句和表达式。

但有时你可能需要一个内部只有一个表达式的函数,例如一个将其参数加倍的函数:

def double(x):
  return x*2

这是一个可以与 map 方法一起使用的函数。

def double(x):
  return x*2
  
my_list = [1, 2, 3, 4, 5, 6]
new_list = list(map(double, my_list))
print(new_list) # [2, 4, 6, 8, 10, 12]

如何在 Python 中使用 lambda 函数

当你在短时间内需要一个小函数时,你可以使用 lambda 函数——例如作为高阶函数(如 map 或 filter)的参数。

lambda 函数的语法是 lambda args: expression。你首先编写单词 lambda,然后是一个空格,然后是所有参数的逗号分隔列表,后跟一个冒号,然后是作为函数体的表达式。

请注意,你不能为 lambda 函数命名,因为它们根据定义是匿名的(没有名称)。

一个 lambda 函数可以有你需要使用的任意数量的参数,但主体必须是一个单一的表达式。

示例 1

例如,你可以编写一个将其参数加倍的 lambda 函数:lambda x: x*2,并将其与 map 函数一起使用,以将列表中的所有元素加倍:

my_list = [1, 2, 3, 4, 5, 6]
new_list = list(map(lambda x: x*2, my_list))
print(new_list) # [2, 4, 6, 8, 10, 12]

注意这个函数和我们上面用 double 函数编写的函数之间的区别。这个比较紧凑,没有多余的函数占用内存空间。

示例 2

或者,你可以编写一个 lambda 函数来检查数字是否为正数,例如 lambda x: x > 0,并将其与 filter 一起使用以创建仅包含正数的列表。

my_list = [18, -3, 5, 0, -1, 12]
new_list = list(filter(lambda x: x > 0, my_list))
print(new_list) # [18, 5, 12]

lambda 函数是在使用它的地方定义的,这样内存中就没有命名函数了。如果一个函数只在一个地方使用,那么可以使用 lambda 函数来避免混乱。

示例 3

你还可以从函数返回 lambda 函数。

如果你需要创建多个乘以数字的函数,例如加倍或三倍等,lambda 可以提供帮助。

你可以创建一个函数 multiplyBy 代替创建多个函数,如下所示,然后使用不同的参数多次调用该函数以创建两倍、三倍等的函数。

def muliplyBy (n):
  return lambda x: x*n
  
double = multiplyBy(2)
triple = muliplyBy(3)
times10 = multiplyBy(10)

lambda 函数从父函数中获取值 n,因此在 double 中 n 的值是 2,在 triple 中是 3,在 times10 中是 10。现在使用参数调用这些函数将乘以该数字。

double(6)
> 12
triple(5)
> 15
times10(12)
> 120

如果你没有在这里使用 lambda 函数,则需要在 multiplyBy 中定义一个不同的函数,如下所示:

def muliplyBy (x):
  def temp (n):
    return x*n
  return temp

使用 lambda 函数,可以写更少代码,并且更具有可读性。

结论

如果对Python有兴趣,想了解更多的Python以及AIoT知识,解决测试问题,以及入门指导,帮你解决学习Python中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己Python方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,可领取最新Python大厂面试资料和Python爬虫、人工智能、学习资料!VX【pydby01】暗号优快云

如果你的函数仅包含一个小表达式,则 Lambda 函数是一种编写函数的紧凑方法。初学者可能不会使用它,但在这里你已经看到如何在任何级别轻松使用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值