Python Lambda表达式

Lambda表达式是Python中的一种匿名函数形式,它可以用来创建简单的函数,通常用于一次性的、简单的函数操作。Lambda表达式的语法比普通函数定义更简洁,但它们的功能有限。Lambda函数可以接受任意数量的参数,但只能具有一个表达式。

1、语法

lambda arguments: expression

执行该表达式并返回结果。

  • lambda: 关键字,表示这是一个lambda表达式。
  • arguments: 函数参数,可以是任意数量的参数,用逗号分隔,但不能包含默认值或可变位置参数(*args)、可变关键字参数(**kwargs)。
  • expression: 函数体,是一个表达式,可以是任意有效的Python表达式,返回该表达式的结果作为函数的返回值。
  • 例如:

    在参数a上添加10,然后返回结果:

    x = lambda a : a + 10
    print(x(5))

    Lambda函数可以接受任意数量的参数:

    例如:

    将参数a与参数b相乘,并返回结果:

    x = lambda a, b : a * b
    print(x(5, 6))

    例如:

    汇总参数abc并返回结果:

    x = lambda a, b, c : a + b + c
    print(x(5, 6, 2))

    2、使用Lambda函数的好处

    lambda用作另一个函数中的匿名函数时,可以更好地使用lambda函数。

    假设有一个接受一个参数的函数定义,该参数将与一个未知数相乘:

    def myfunc(n):
        return lambda a : a * n

    使用该函数定义可创建一个始终使您发送的数字翻倍的函数:

    例如:

    def myfunc(n):
        return lambda a : a * n
    
    mydoubler = myfunc(2)
    
    print(mydoubler(11))

    或者,使用相同的函数定义,使一个函数总是三倍的数字你发送:

    例如:

    def myfunc(n):
        return lambda a : a * n
    
    mytripler = myfunc(3)
    
    print(mytripler(11))

    或者,在同一程序中使用相同的函数定义来创建两个函数:

    例如:

    def myfunc(n):
        return lambda a : a * n
    
    mydoubler = myfunc(2)
    mytripler = myfunc(3)
    
    print(mydoubler(11))
    print(mytripler(11))

    在短时间内需要使用匿名函数时,请使用lambda函数。

    1)单个参数的Lambda表达式

    # 普通函数形式
    def square(x):
        return x * x
    
    # Lambda表达式形式
    square_lambda = lambda x: x * x
    
    print(square(5))         # 输出:25
    print(square_lambda(5))  # 输出:25
    

    2)多个参数的Lambda表达式:

    # 普通函数形式
    def add(x, y):
        return x + y
    
    # Lambda表达式形式
    add_lambda = lambda x, y: x + y
    
    print(add(3, 5))         # 输出:8
    print(add_lambda(3, 5))  # 输出:8
    

    3)在高阶函数中使用Lambda表达式:

    Lambda表达式通常用于高阶函数中,如map()filter()sorted()等,可以使代码更简洁。

    # 使用map()函数将列表中的每个元素求平方
    numbers = [1, 2, 3, 4, 5]
    squared = list(map(lambda x: x * x, numbers))
    print(squared)  # 输出:[1, 4, 9, 16, 25]
    
    # 使用filter()函数过滤列表中的偶数
    evens = list(filter(lambda x: x % 2 == 0, numbers))
    print(evens)    # 输出:[2, 4]

    推荐阅读
    cjavapy编程之路首页