Python中的Lambda表达式

Lambda表达式

当我们需要做一些简单的事情并且更希望快速完成工作而不是正式命名函数时,Lambda表达式是理想的选择。Lambda表达式也称为匿名函数。

Python中的Lambda表达式是声明小型匿名函数的一种简短方式(没有必要为Lambda函数提供名称)。

Lambda函数的行为就像使用def关键字声明的常规函数一样。当您希望以简洁的方式定义一个小型函数时,它们就派上用场了。它们只能包含一个表达式,因此不适合具有控制流语句的函数。

Lambda函数的语法

lambda arguments: expression

Lambda函数可以具有任意数量的参数,但只能有一个表达式。

代码示例

# Lambda函数计算数字的平方

square = lambda x: x ** 2

print(square(3)) # 输出: 9

# 传统函数计算数字的平方

def square1(num):

return num ** 2

print(square(5)) # 输出: 25

在上面的lambda示例中,lambda x: x ** 2产生一个可以与任何名称关联的匿名函数对象。因此,我们将功能对象与关联square。因此,从现在开始,我们可以square像调用任何传统函数一样调用对象square(10)

Lambda函数的示例

初级

lambda_func = lambda x: x**2 # 需要一个整数并返回其平方的函数

lambda_func(4) # 返回16

中等

lambda_func = lambda x: True if x**2 >= 10 else False

lambda_func(3) # 返回 False

lambda_func(8) # 返回 True

复杂

linuxidc_dict = {"X": 1, "Y": 2, "Z": 3}

sorted(linuxidc_dict, key=lambda i: linuxidc_dict[i]%3) # 返回 ['Z', 'X', 'Y']

用例

假设您要从中过滤出奇数list。您可以使用for循环:

>>> linuxidc_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

>>> filtered = []

>>> for num in linuxidc_list:

...  if num % 2 != 0:

...    filtered.append(num)

...

>>> print(filtered)  # Python 2: 打印 filtered

[1, 3, 5, 7, 9, 11]

或者你可以把它写成一个包含List Comprehensions 即列表生成式的一行代码:

filtered = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] if x % 2 != 0]

但是您可能会想使用内置的filter数。为什么?第一个示例有点过于冗长,难以理解。但重要的是,内置函数通常更快。

>>> linuxidc_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

>>> filtered = filter(lambda i: i % 2 != 0, linuxidc_list)

>>> list(filtered)

[1, 3, 5, 7, 9, 11]

注意:在Python 3中内置的函数会返回生成器对象,所以你必须调用list。另一方面,在Python2中,它们返回一个list,tupleor 或 string。

所以发生了什么事?您告诉filter获取linuxidc_list中的每个元素并应用lambda表达式。返回False的值被过滤掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值