Python中常见的高阶函数介绍与实例
什么是高阶函数?
高阶函数是指能够将函数作为参数传递的函数,或者返回值是一个函数的函数。简而言之,它是一种将函数视为一等公民的编程范式。
在Python中,高阶函数虽然看似高端大气,但其实是非常常见的,例如map、filter、reduce等函数就是高阶函数。
下面将介绍三种常见的高阶函数及其应用。
1. map函数
map函数是Python内置的一个函数,其作用是对可迭代对象中的每个元素应用一个函数,然后返回映射后的结果。
map函数的基本语法如下:
map(function, iterable, ...)
其中,function是要应用的函数,iterable是可迭代对象,可以是列表、元组、字典等。
下面是map函数的一些应用实例:
将列表中的每个元素平方
def square(x):
return x ** 2
lst = [1, 2, 3, 4, 5]
result = list(map(square, lst))
print(result)
# 输出 [1, 4, 9, 16, 25]
将列表中的每个元素转化为字符串类型
lst = [1, 2, 3, 4, 5] result = list(map(str, lst)) print(result) # 输出 ['1', '2', '3', '4', '5']
2. filter函数
filter函数是Python内置的一个函数,其作用是对可迭代对象中的每个元素应用一个判断函数,返回满足条件的元素所组成的迭代器。
filter函数的基本语法如下:
filter(function, iterable)
其中,function是要应用的判断函数,iterable是可迭代对象,可以是列表、元组、字典等。
下面是filter函数的一些应用实例:
将列表中的偶数过滤出来
def is_even(x):
return x % 2 == 0
lst = [1, 2, 3, 4, 5]
result = list(filter(is_even, lst))
print(result)
# 输出 [2, 4]
将列表中长度大于2的字符串过滤出来
lst = ['a', 'ab', 'abc', 'abcd'] result = list(filter(lambda s: len(s) > 2, lst)) print(result) # 输出 ['abc', 'abcd']
3. reduce函数
reduce函数是Python内置的一个函数,其作用是对可迭代对象中的所有元素依次应用一个函数,返回最终结果。它与map和filter不同,reduce函数最终返回的是一个值,而不是一个迭代器。
reduce函数的基本语法如下:
reduce(function, iterable, initial=None)
其中,function是要应用的函数,iterable是可迭代对象,initial是一个可选参数,表示 个值。
下面是reduce函数的一些应用实例:
求列表中所有元素的和
from functools import reduce lst = [1, 2, 3, 4, 5] result = reduce(lambda x, y: x + y, lst) print(result) # 输出 15
求列表中所有元素的积
lst = [1, 2, 3, 4, 5] result = reduce(lambda x, y: x * y, lst) print(result) # 输出 120
需要注意的是,使用reduce函数时需要先导入functools模块。
结语
以上是Python中常见的三个高阶函数,它们对我们日常的Python编程非常有用。当然,除了map、filter、reduce之外,Python中还有很多其他的高阶函数,例如sorted、any、all等,大家可以根据自己的需求进行学习和使用。
