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

Python函数lambda()的使用方法及其在函数式编程中的应用

发布时间:2023-06-08 04:11:46

Python中lambda()是一个高阶函数,也称为匿名函数或闭包函数,它的形式如下:

lambda argument_list: expression

其中,lambda关键字表示定义一个函数,argument_list表示函数的参数列表,用逗号隔开,expression表示函数执行的表达式。

lambda()的使用方法:

1. 定义一个简单函数:

# 普通函数
def add(x, y):
    return x + y

# lambda函数
add = lambda x, y: x + y

2. 将lambda函数作为参数传递给其他函数:

# 使用map()函数将列表中的元素全部转为字符串类型
lst = [1, 2, 3, 4]
lst_str = list(map(lambda x: str(x), lst))

3. 将lambda函数作为返回值:

# 定义一个计算平方的函数,返回一个lambda函数
def square():
    return lambda x: x**2

sq = square()
print(sq(5)) # 输出25

lambda()在函数式编程中的应用:

1. filter()

filter()函数接收一个函数与一个可迭代对象作为参数,返回可迭代对象中符合条件的元素。这个函数与lambda()函数结合起来使用效果更佳。如下:

# 过滤出一个列表中所有奇数
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
odd_lst = list(filter(lambda x: x % 2 != 0, lst))
print(odd_lst) # 输出[1, 3, 5, 7, 9]

2. map()

map()函数接收一个函数与一个可迭代对象作为参数,通过对可迭代对象中的元素执行函数得到新的列表。如下:

# 将一个列表中的数全部平方
lst = [1, 2, 3, 4]
sq_lst = list(map(lambda x: x**2, lst))
print(sq_lst) # 输出[1, 4, 9, 16]

3. reduce()

reduce()函数是Python2中的内置函数,在Python3中需要从functools模块中导入。它接收一个函数与一个可迭代对象作为参数,将可迭代对象中的元素按顺序迭代,依次执行函数并返回一个值。如下:

# 将一个列表中所有的数相加
from functools import reduce
lst = [1, 2, 3, 4, 5]
sum_lst = reduce(lambda x, y: x + y, lst)
print(sum_lst) # 输出15

lambda()是Python中十分重要的一个函数,它可以帮助我们更方便地定义简单的函数,同时也十分有用地应用在函数式编程中。但是,由于它是一个匿名函数,可读性较差,不适合处理过于复杂的问题。因此,在编写代码时需要根据实际情况选择使用。