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

Python函数式编程入门: lambda与高阶函数使用

发布时间:2023-06-04 07:08:56

Python中的lambda函数与高阶函数是函数式编程的两个基础元素,是深入理解函数式编程的首要内容。接下来将详细说明它们的使用方法。

1. lambda函数

lambda函数是一种匿名函数,可以在代码中即定义即用。比如,当我们希望对一个列表进行排序时,可以使用sorted()函数配合lambda函数实现:

sort_list = sorted(['apple', 'banana', 'grape', 'orange'], key=lambda x: x[1])

上述lambda函数的作用是,以列表中每个字符串的 个字母为排序的关键字。lambda函数的一般形式为:

lambda x: expression

其中,x为输入参数,expression为函数体,相当于一个表达式。我们可以像使用函数一样调用lambda函数。

另外,lambda函数也可以接收多个参数,形式如下:

lambda x, y, z: expression

下面再看一个lambda函数的使用例子,示例代码如下:

def add_square(x, y):
    return (x + y) ** 2

print(add_square(3, 4)) # output: 49

add_square_lambda = lambda x, y: (x + y) ** 2
print(add_square_lambda(3, 4)) # output: 49

上述代码中,我们定义了一个add_square()函数,然后使用 lambda 函数再次定义了一个相同功能的匿名函数。使用lambda函数的时候,我们可以省略掉函数的定义和return语句,直接写出函数体。

2. 高阶函数

高阶函数是指将函数作为参数或返回值的函数。Python中的一些常见高阶函数如下:

* map()函数:将一个函数作用于一个可迭代对象的每个元素,返回一个新的可迭代对象。示例代码如下:

def cube(x):
    return x ** 3

cube_list = list(map(cube, [1, 2, 3, 4, 5]))
print(cube_list) # output: [1, 8, 27, 64, 125]

cube_lambda_list = list(map(lambda x: x ** 3, [1, 2, 3, 4, 5]))
print(cube_lambda_list) # output: [1, 8, 27, 64, 125]

上述代码中,我们定义了一个cube()函数和一个匿名函数lambda x: x ** 3,然后使用map()函数分别将它们作用于一个列表。我们会发现,使用匿名函数的时候,代码更加简洁。

* filter()函数:返回一个可迭代对象,包含所有使函数返回True的元素。示例代码如下:

def is_even(x):
    return x % 2 == 0

even_list = list(filter(is_even, [1, 2, 3, 4, 5, 6]))
print(even_list) # output: [2, 4, 6]

even_lambda_list = list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6]))
print(even_lambda_list) # output: [2, 4, 6]

上述代码中,我们定义了一个is_even()函数和一个匿名函数lambda x: x % 2 == 0,然后使用filter()函数分别将它们作用于一个列表,返回所有偶数。

* reduce()函数:使用一个二元操作函数将一个序列中的所有元素都归约到一个单独的值。示例代码如下:

from functools import reduce

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

multiply_result = reduce(multiply, [1, 2, 3, 4, 5])
print(multiply_result) # output: 120

multiply_lambda_result = reduce(lambda x, y: x * y, [1, 2, 3, 4, 5])
print(multiply_lambda_result) # output: 120

上述代码中,我们定义了一个multiply()函数和一个匿名函数lambda x, y: x * y,然后使用reduce()函数将它们作用于一个列表,返回所有元素的积。

总结

在Python中,lambda函数和高阶函数是实现函数式编程的两个基础元素。使用lambda函数可以方便地定义匿名函数,避免写一些不必要的代码,使用高阶函数可以方便地操作各种可迭代对象,简化代码实现。掌握这两个元素,你将可以更好地编写高效简洁的代码。