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

Python中常用的高阶函数及其妙用

发布时间:2023-06-02 10:25:41

Python 中的高阶函数是指能够接收一个或多个函数作为参数,并且返回一个函数的函数。在编程过程中,高阶函数可以为程序提供灵活性和代码复用性。在此文章中,我们将介绍 Python 中几个常用的高阶函数以及它们的妙用。

1. map() 函数

map() 函数可以接收一个函数和一个迭代器(列表、元组、字典等),并将该函数应用于迭代器中的每个元素。最终 map() 函数返回一个由函数处理后的所有元素组成的列表,这个函数可以是自定义的函数,也可以是系统自带的函数。

示例代码:

def double(x):

    return x * 2

numbers = [1, 2, 3, 4, 5]

result = map(double, numbers)

print(list(result))

输出结果:

[2, 4, 6, 8, 10]

在此示例中,我们定义了一个 double() 函数,将其作为参数传递给 map() 函数,并将一个列表作为第二个参数传递给 map() 函数,在 map() 函数内部,它将 double() 函数应用于列表中的每个元素,然后返回处理后的结果列表。

2. filter() 函数

与 map() 函数类似,filter() 函数也可以接收一个函数和一个迭代器,但是 filter() 函数的返回结果是迭代器中满足函数条件的元素所组成的迭代器。

示例代码:

def is_even(x):

    return x % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]

result = filter(is_even, numbers)

print(list(result))

输出结果:

[2, 4, 6]

在此示例中,我们定义了一个 is_even() 函数,将其作为参数传递给 filter() 函数,并将一个列表作为第二个参数传递给 filter() 函数。在 filter() 函数内部,它将 is_even() 函数应用于列表中的每个元素,返回满足 is_even() 函数条件的元素所组成的迭代器。

3. reduce() 函数

reduce() 函数可以接收一个函数和一个迭代器,将函数应用于迭代器中的两个元素,然后将结果继续应用到下一个元素,最终返回一个值。reduce() 函数在 Python3 中已经不再是内置函数,需要从 functools 模块中导入。

示例代码:

from functools import reduce

def add(x, y):

    return x + y

numbers = [1, 2, 3, 4, 5]

result = reduce(add, numbers)

print(result)

输出结果:

15

在此示例中,我们定义了一个 add() 函数,将其作为参数传递给 reduce() 函数,并将一个列表作为第二个参数传递给 reduce() 函数。在 reduce() 函数内部,它将 add() 函数应用于列表中的每两个元素,然后将结果继续应用到下一个元素,最终返回所有元素相加的结果。

4. sorted() 函数

sorted() 函数可以接收一个可迭代对象(列表、元组、字典等)并返回对该对象排序后的一个列表。此函数还可以接收 key 和 reverse 参数,用于指定排序方式和排序顺序。

示例代码:

numbers = [3, 1, 4, 6, 5, 2]

result = sorted(numbers)

print(result)

students = [('Tom', 90), ('John', 78), ('Lucy', 82)]

result = sorted(students, key=lambda x: x[1], reverse=True)

print(result)

输出结果:

[1, 2, 3, 4, 5, 6]

[('Tom', 90), ('Lucy', 82), ('John', 78)]

在 个示例中,我们使用 sorted() 函数对一个列表进行升序排列,返回的是排列后的列表。在第二个示例中,我们使用 sorted() 函数对一个元组中每个元素的第二个值(学生的成绩)进行降序排列,并按照学生的名称作为次要排序顺序。

总结

Python 中的高阶函数是非常有用的工具。使用 map()、filter() 和 reduce() 函数可以在有大量迭代数据时使代码变得更加简化和可读性更强。sorted() 函数使我们能够更加轻松地对不同类型的对象进行排序,并且也可以根据需要指定排序方式和顺序。

这些高阶函数的灵活性和功能使得 Python 代码编写变得更加简洁、易于理解和可维护。熟练掌握这些高阶函数将使 Python 编程更加容易和高效。