Python3的高阶函数map,reduce,filter的示例详解
在Python编程语言中,高阶函数是一类特殊的函数,它们能够接受其他函数作为参数或返回一个新的函数。Python3中的三个重要高阶函数分别是`map()`, `reduce()`, 和 `filter()`,它们提供了对数据处理的强大功能。 1. **map()函数**: `map()`函数接受一个函数和一个可迭代对象(如列表、元组等)作为参数,将函数依次应用到可迭代对象的每个元素上,并返回一个新的迭代器,包含函数应用后的结果。例如,将整数列表转换为对应的字符串表示: ```python print(list(map(str, [1, 2, 3]))) # 输出: ['1', '2', '3'] ``` 注意,`map()`返回的是一个惰性序列,即不会立即计算所有结果,而是按需生成。如果需要获取所有结果,需要将其转化为列表。错误`TypeError: 'map' object is not callable`通常是因为误操作使`map`对象被调用,而不是其返回值。 2. **reduce()函数**: `reduce()`函数用于对一序列的元素进行累积计算,它接受一个函数和一个可迭代对象。函数需要接受两个参数,`reduce()`会将序列的第一个元素和第二个元素传给该函数,然后将结果与下一个元素再次调用函数,直到序列耗尽,返回最后的累积结果。例如,计算数字列表的和: ```python from functools import reduce # 在Python3中,reduce()函数已被移动到functools模块 def add(x, y): return x + y print(reduce(add, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])) # 输出: 55 ``` `reduce()`可以结合`map()`函数进行复杂的计算,例如将字符串转换为整数: ```python str_num = '12121212132323' dic_str_int = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} def str_arr(x): return dic_str_int[x] def int_dum(x, y): return 10 * x + y print(reduce(int_dum, map(str_arr, str_num))) # 输出: 12121212132323 ``` 3. **filter()函数**: `filter()`函数用于过滤序列,它接受一个函数和一个可迭代对象,函数会应用到序列的每个元素上,如果函数返回`True`,则元素会被包含在新的迭代器中。例如,过滤出列表中的偶数: ```python numbers = [1, 2, 3, 4, 5, 6] even_numbers = filter(lambda x: x % 2 == 0, numbers) print(list(even_numbers)) # 输出: [2, 4, 6] ``` 类似于`map()`和`reduce()`,`filter()`也返回一个惰性序列,需转换为列表或其他容器以查看完整结果。 这三种高阶函数在处理数据时提供了一种更抽象和灵活的方式,使得代码更加简洁易读。它们常用于函数式编程风格,有助于简化复杂的数据处理任务。了解和熟练使用这些函数对于提升Python编程能力至关重要。
- 粉丝: 5
- 资源: 922
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助