在 Python 中,函数是一等对象(first-class object),可以像其他对象一样被传递、赋值、作为参数或返回值。高阶函数(higher-order function)是指接受一个或多个函数作为参数,并且/或者返回一个函数作为结果的函数。在函数式编程中,高阶函数是一个非常重要的概念。
常见的高阶函数有 map()
、filter()
、reduce()
和 sorted()
等,它们都是 Python 内置函数。
map()
函数接受一个函数和一个可迭代对象作为参数,将该函数应用于可迭代对象中的每个元素,并返回一个新的可迭代对象,其中每个元素都是应用该函数后的结果。
例如,我们可以将一个列表中的所有元素转换为它们的平方值:
def square(x):
return x ** 2
lst = [1, 2, 3, 4, 5]
result = map(square, lst)
print(list(result)) # 输出 [1, 4, 9, 16, 25]
在这个例子中,square()
函数接受一个参数 x
,返回 x
的平方。lst
是一个包含整数的列表。我们将 square()
函数作为参数传递给 map()
函数,map()
函数将 square()
应用于列表中的每个元素,并返回一个新的可迭代对象。我们将结果转换为列表并打印出来,输出为 [1, 4, 9, 16, 25]
。
filter()
函数接受一个函数和一个可迭代对象作为参数,该函数应该返回一个布尔值。filter()
函数返回一个新的可迭代对象,其中仅包含满足条件的元素。
例如,我们可以从一个列表中过滤掉所有的偶数:
def is_odd(x):
return x % 2 != 0
lst = [1, 2, 3, 4, 5]
result = filter(is_odd, lst)
print(list(result)) # 输出 [1, 3, 5]
在这个例子中,is_odd()
函数接受一个参数 x
,返回 x
是否为奇数。lst
是一个包含整数的列表。我们将 is_odd()
函数作为参数传递给 filter()
函数,filter()
函数将 is_odd()
应用于列表中的每个元素,并返回一个新的可迭代对象,其中仅包含满足条件的元素。我们将结果转换为列表并打印出来,输出为 [1, 3, 5]
。