python 匿名函数 lambda
python
本文字数:654 字 | 阅读时长 ≈ 2 min

python 匿名函数 lambda

python
本文字数:654 字 | 阅读时长 ≈ 2 min

1. lambda 函数

python 用 lambda 来创建匿名函数,该函数是一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式。

匿名函数不需要使用 def 关键字定义完整函数,常用于编写简单的、单行的函数,通常在需要函数作为参数传递的情况下使用,例如在 map()、filter()、reduce() 等函数中

lambda 函数通常只包含一行代码,表达式: lambda arguments: expression

下面展示几个 lambda 函数的例子,lambda 函数既可以指定参数,也可以不指定

>>> f = lambda: "Hello, world!"
>>> print(f())
Hello, world!
>>> x = lambda a:a+10
>>> print(x(5))
15

lambda 函数也可以设置多个参数,参数使用逗号隔开

>>> x = lambda a,b : a*b
>>> print(x(5, 6))
30
>>> x = lambda a,b,c : a+b+c
>>> print(x(5, 6, 2))
13

2. lambda 高阶使用

map(), filter()reduce() 是 Python 中的三个高阶函数,它们可以接受一个函数作为参数,并对一个序列(如列表、元组等)进行操作。这三个函数的主要目的是简化代码,并提高可读性

  1. map(function, sequence):将指定函数应用于序列的每个元素,并返回一个新的可迭代对象。
    例如,将一个数字列表中的每个元素平方:
def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)

# 转换为列表以便查看结果
print(list(squared_numbers))  # 输出:[1, 4, 9, 16, 25]
  1. filter(function, sequence):使用指定函数过滤序列中的元素,返回一个新的可迭代对象,其中包含使指定函数返回 True 的元素。例如,从一个数字列表中过滤出偶数:
def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5]
even_numbers = filter(is_even, numbers)

# 转换为列表以便查看结果
print(list(even_numbers))  # 输出:[2, 4]
  1. reduce(function, sequence):将指定函数应用于序列的元素,以便将序列缩减为单个值。reduce() 函数需要从 functools 模块中导入。例如,计算一个数字列表的乘积:
from functools import reduce

def multiply(x, y):
    return x * y

numbers = [1, 2, 3, 4, 5]
product = reduce(multiply, numbers)

print(product)  # 输出:120

汇总使用来简化代码

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
even_numbers = filter(lambda x: x % 2 == 0, numbers)
product = reduce(lambda x, y: x * y, numbers)
4月 06, 2025
3月 10, 2025
12月 31, 2024