在Python中,高阶函数是指那些可以接受函数作为参数或者返回函数作为结果的函数。这种特性使得函数式编程成为可能,并且可以编写出更加简洁和灵活的代码。以下是Python中一些常用的高阶函数:
-
map()
map()
函数接受一个函数和一个可迭代对象作为参数,并将该函数应用于可迭代对象的每个元素,返回一个新的可迭代对象,其中包含了应用函数后的结果。python复制
def square(x): return x * x numbers = [1, 2, 3, 4] squared_numbers = map(square, numbers) print(list(squared_numbers)) # 输出: [1, 4, 9, 16]
-
filter()
filter()
函数接受一个函数和一个可迭代对象作为参数,该函数应该返回一个布尔值。filter()
会根据函数的返回值过滤可迭代对象的元素,返回一个新的可迭代对象,其中包含了所有使得函数返回True
的元素。python复制
def is_even(x): return x % 2 == 0 numbers = [1, 2, 3, 4, 5, 6] even_numbers = filter(is_even, numbers) print(list(even_numbers)) # 输出: [2, 4, 6]
-
reduce()
reduce()
函数通常用于对一个序列做累积计算。它接受一个函数和一个可迭代对象作为参数,函数应该接受两个参数。reduce()
会将函数应用于序列的第一个和第二个元素,然后将结果与第三个元素一起应用函数,以此类推,直到处理完所有元素。reduce()
返回一个单一的结果。python复制
from functools import reduce def add(x, y): return x + y numbers = [1, 2, 3, 4, 5] sum_of_numbers = reduce(add, numbers) print(sum_of_numbers) # 输出: 15
-
sorted()
sorted()
函数可以接受一个函数作为key
参数,该函数用于计算排序的依据。sorted()
会根据这个函数的结果对可迭代对象进行排序,并返回一个新的排序后的列表。python复制
students = [ {"name": "Alice", "age": 20}, {"name": "Bob", "age": 19}, {"name": "Charlie", "age": 21} ] # 按年龄排序 sorted_students = sorted(students, key=lambda student: student["age"]) print(sorted_students) # 输出: [{'name': 'Bob', 'age': 19}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 21}]
-
apply()
apply()
函数在Python 2中可用,但在Python 3中已被移除。它用于调用函数,并可以传递参数列表或字典。在Python 3中,通常直接调用函数并传递参数。 -
partial()
functools.partial()
函数用于部分应用一个函数,即固定函数的某些参数,返回一个新的函数。python复制
from functools import partial def power(base, exponent): return base ** exponent square = partial(power, exponent=2) print(square(3)) # 输出: 9
这些高阶函数在Python中非常有用,它们可以简化代码,提高代码的可读性和可维护性。通过使用高阶函数,可以将复杂的逻辑分解成更小的、可重用的部分,从而使代码更加模块化。