欢迎访问宙启技术站
智能推送

Python lambda函数 – 简单易学的匿名函数

发布时间:2023-05-31 10:53:50

Python lambda函数是一种匿名函数,可以在需要函数的地方直接定义函数。与常规函数不同,lambda函数没有函数名,只有参数和函数体。由于这种函数没有函数名,因此它们通常用于需要简单功能且只需使用一次的场景。

lambda函数通常使用lambda关键字来定义。它们由参数列表和冒号分隔的表达式组成,该表达式被计算并返回结果。例如:

square = lambda x: x*x

# 调用lambda函数
print(square(2)) # 4

在这个例子中,我们定义了一个square函数,它接收一个参数并返回它的平方。调用lambda函数时,我们只需要使用参数调用它即可。

Lambda函数的语法如下:

lambda arguments: expression

其中,arguments表示逗号分隔的参数列表,expression表示要执行的代码块。其中的expression应该是一个单一的语句,返回一个值或一个表达式。

以下是lambda函数的一些常见用法:

1.作为函数的参数

# 例1:以lambda函数为参数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = filter(lambda x: x % 2 == 0, numbers)

# 输出过滤后的数字
print(list(filtered_numbers)) # [2, 4, 6, 8, 10]

# 例2:以lambda函数为参数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
mapped_numbers = map(lambda x: x * 2, numbers)

# 输出加倍后的数字
print(list(mapped_numbers)) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

在这些示例中,我们将lambda函数作为参数传递给常用函数,如filter和map函数。这样,我们可以过滤和映射列表中的元素。

2.作为函数的返回值

# 例1:返回lambda函数
def get_function(type):
  if type == "add":
    return lambda x, y: x + y
  else:
    return lambda x, y: x - y
  
# 返回lambda函数
add_function = get_function("add")
print(add_function(2, 3)) # 5

sub_function = get_function("subtract")
print(sub_function(5, 2)) # 3

在这个例子中,我们定义了一个get_function函数,它根据type参数返回一个lambda函数。这样,我们可以轻松地获取所需的函数并将其存储在变量中。

3.lambda函数链

# 例1:lambda函数链
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = (lambda x:x*2)(3)

# 输出结果
print(result) # 6

在这个例子中,我们定义了一个lambda函数链,即在一行代码中使用lambda函数进行运算。该方式需要非常谨慎,因为代码可能很难阅读和维护。

总结

Python lambda函数是一种非常简单和方便的函数。使用lambda函数提高代码的可读性和可维护性。然而,它们不应该滥用,尤其是在函数链中使用时。如需更加显式和可读性的代码,可以考虑使用常规函数。