🧰 函数式编程工具:
Python 提供了一些函 数式编程工具函数,可以配合高阶函数对数据进行灵活的处理,让代码更简洁、高效。
这些工具常配合 匿名(lambda) 表达式一起使用。
map:对序列中每个元素应用函数reduce:筛选满足条件的元素filter:累计处理元素(需导入)sorted:排序
⭐️ 此节学习的函数,都是Python 内置函数 ⭐️
✅ 1. 映射 map(function, iterable):
作用:将 function 作用于 iterable 的每个元素,返回一个 map 对象(可迭代)。
定 平方(n): 返回 n * n
结果 = 映射(平方, [1, 2, 3, 4])
打印(list(结果)) # 输出: [1, 4, 9, 16]
✅ 2. 过滤 filter(function, iterable):
作用:把 function 作用于每个元素,返回值为 True 的元素会保留。
定 验证_偶数(n): 返回 n % 2 == 0
结果 = 过滤(验证_偶数, [1, 2, 3, 4, 5, 6])
打印(列表(结果)) # 输出: [2, 4, 6]
✅ 3. 归约 reduce(function, iterable):
作用:对序列中的元素进行“连续两两归约”操作,直到变为一个结果。
需要从 functools 模块导入:
从 functools 导入 归约
定 加(x, y): 返回 x + y
结果 = 归约(加, [1, 2, 3, 4])
打印(结果) # 输出: 10
可用于累乘、拼接字符串等。
✅ 4. 排序 sorted(iterable, key=函数, reverse=布尔值):
作用:对序列排序,可通过 key 指定排序方式。
# 按绝对值排序
列表 = [-5, 3, -1, 10]
排序后 = 排序(列表, key=abs)
打印(排序后) # [-1, 3, -5, 10]
还可以使用自定义函数或 lambda 作为 key。
✅ 函数式工具对比总结
| 函数 | 英文 | 用途 | 返回值类型 |
|---|---|---|---|
映射(f, seq) | map(f, seq) | 映射每个元素 | map 对象(可转 list) |
过滤(f, seq) | filter(f, seq) | 筛选符合条件的元素 | filter 对象 |
归约(f, seq) | reduce(f, seq) | 折叠序列成单个值 | 最终结果 |
排序(seq, key) | sorted(seq, key) | 排序 | 排序后的列表 |