• 周二. 2月 7th, 2023

Python lambda 函数的详细用法

城主

12月 26, 2022 ,

在 Python 中,lambda 函数是一种匿名函数,即定义函数的方式中没有函数名。它用来创建简单的函数,通常在需要传递小函数作为参数时使用。

Lambda 函数的语法形式如下:





lambda arguments: expression

其中,arguments 是一个逗号分隔的参数列表,expression 是函数体,只能包含一条表达式。Lambda 函数不能包含命令,所以它们也不能包含 return 语句。返回值是表达式的值。

下面是一个使用 lambda 函数的示例:





# 定义函数
def double(x):
    return x * 2

# 使用 lambda 函数
double = lambda x: x * 2

# 调用函数
print(double(5))  # 输出 10

在上面的示例中,我们使用 lambda 函数定义了一个简单的函数 double,它将参数 x 乘以 2。

Lambda 函数常用于传递给高阶函数(即接受函数作为参数的函数),如 map、filter 和 reduce 等。下面是一个使用 lambda 函数作为 map 函数参数的示例:





# 使用 map 函数和 lambda 函数将列表中的所有数字乘以 2
numbers = [1, 2, 3, 4]
result = map(lambda x: x * 2, numbers)
print(list(result))  # 输出 [2, 4, 6, 8]

在 Python 中,lambda 函数也可以接受多个参数。例如,下面的 lambda 函数接受两个参数 x 和 y:





f = lambda x, y: x + y
print(f(1, 2))  # 输出 3

Lambda 函数也可以用在 Python 中的排序函数 sorted 中,来指定排序的关键字。下面是一个将列表按照第二个元素进行排序的例子:





# 定义列表
items = [("apple", 3), ("banana", 2), ("orange", 1)]

# 使用 lambda 函数作为关键字参数
items.sort(key=lambda x: x[1])
print(items)  # 输出 [("orange", 1), ("banana", 2), ("apple", 3)]

有时候,你可能希望在 lambda 函数中使用多个表达式。在这种情况下,你可以使用 Python 中的条件表达式,也就是三元运算符。例如,下面的 lambda 函数返回 x 和 y 中较大的值:





f = lambda x, y: x if x > y else y
print(f(1, 2))  # 输出 2

在 Python 中,lambda 函数也可以嵌套使用。例如,你可以在一个 lambda 函数中定义另一个 lambda 函数。例如:





# 定义一个函数,该函数返回一个 lambda 函数
def make_counter(x):
    return lambda y: x + y

# 使用 make_counter 函数创建计数器
counter = make_counter(0)

# 调用计数器
print(counter(1))  # 输出 1
print(counter(2))  # 输出 3
print(counter(3))  # 输出 6

在上面的示例中,我们定义了一个函数 make_counter,它返回一个 lambda 函数。这个 lambda 函数接受一个参数 y,并将它加到函数 make_counter 中传递的参数 x 上。

阅读  Python 数据结构详解

Lambda 函数也可以用在 Python 中的内置函数中,如 filter 函数。下面是一个使用 lambda 函数作为 filter 函数参数的例子:





# 定义列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用 filter 函数和 lambda 函数筛选出列表中的奇数
result = filter(lambda x: x % 2 == 1, numbers)
print(list(result))  # 输出 [1, 3, 5, 7, 9]

在 Python 中,lambda 函数也可以用于创建闭包。闭包是一种函数,它记住在其定义时的环境,并在稍后使用这些变量。

下面是一个使用 lambda 函数创建闭包的例子:





# 定义函数
def make_counter(x):
    # 定义闭包
    counter = lambda y: x + y
    return counter

# 使用 make_counter 函数创建计数器
counter = make_counter(0)

# 调用计数器
print(counter(1))  # 输出 1
print(counter(2))  # 输出 3
print(counter(3))  # 输出 6

在上面的示例中,我们定义了一个函数 make_counter,它返回一个 lambda 函数。这个 lambda 函数记住了函数 make_counter 中传递的参数 x,并在稍后使用这个参数。

总之,lambda 函数是一种简单的函数,它可以接受多个参数,并且可以使用条件表达式。lambda 函数可以嵌套使用,并且可以用在内置函数中。它们是 Python 中一种简单的函数,常用于创建匿名函数,并在高阶函数的参数中很有用。