Python高阶函数详解:内置map、reduce、filter函数示例

0 下载量 191 浏览量 更新于2024-08-31 收藏 186KB PDF 举报
"这篇资源主要介绍了Python中的高阶函数,包括它们的定义、特性以及一些内置的高阶函数,如map、reduce和filter。" 在Python编程语言中,高阶函数是一类特殊的函数,它们可以接受另一个函数作为参数,或者返回一个新的函数。这种功能使得高阶函数在处理复杂逻辑和元编程时非常有用。高阶函数的概念基于函数也是一种数据类型,因此可以被赋值给变量,作为参数传递,甚至作为其他函数的返回值。 一个简单的例子是`abs`函数,它用于计算整数的绝对值。可以将`abs`赋值给变量`f`,然后通过`f(-10)`调用这个函数。此外,`fun`是一个高阶函数,它接受两个数值`x`和`y`以及一个函数`f`作为参数,然后分别应用`f`到`x`和`y`上并返回结果。 Python内置了一些高阶函数,其中: 1. **map**:`map()`函数接受一个函数和一个序列(如列表)作为参数,将函数依次应用于序列的每个元素,然后返回一个新的迭代器,包含所有应用函数后的结果。例如,可以使用`map()`来计算一系列数字的阶乘。 ```python # 示例:求2-7以内10个随机数的阶乘列表 import random def factorial(x): res = 1 for i in range(1, x + 1): res *= i return res li = [random.randint(2, 7) for _ in range(10)] print(list(map(factorial, li))) ``` 2. **reduce**:`reduce()`函数对序列进行累积操作,将一个函数连续地应用到序列的元素上,通常用于实现某种累积计算,如累加或累乘。在Python 3中,`reduce()`已经不在内置函数列表中,需要从`functools`模块导入。 ```python from functools import reduce def multiply(x, y): return x * y print(reduce(multiply, range(1, 4))) # 累乘 def add(x, y): return x + y print(reduce(add, [1, 2, 3, 4, 5])) # 累加 ``` 3. **filter**:`filter()`函数与`map()`相似,也接受一个函数和一个序列。但它不是返回所有元素的结果,而是根据提供的函数返回的布尔值来过滤序列,只保留使函数返回`True`的元素。例如,可以使用`filter()`找出1到100之间的所有奇数。 ```python def is_odd(num): return num % 2 != 0 print(list(filter(is_odd, range(1, 101)))) # 打印1到100的奇数 ``` 除了上述的高阶函数,Python还有其他一些高阶函数,如`sorted()`、`lambda`表达式和`匿名函数`等,它们在处理数据和控制流程方面都非常强大。学习和熟练运用这些高阶函数,可以显著提高代码的简洁性和可读性,同时也能更好地利用Python的函数式编程特性。